• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Why so serious? --[NKU]schindlerlee

            pku3334 二分+求多邊形面積

            ?1?/*
            ?2??*?SOUR:pku3334
            ?3??*?ALGO:二分高度,求水平線和多邊形的交點,求出多邊形面積
            ?4??*?DATE:?2010年?07月?07日?星期三?22:29:14?CST
            ?5??*?*/
            ?6?const?int?N?=?1024;
            ?7?struct?point_t?{
            ?8?????double?x,?y;
            ?9?????point_t?(){}
            10?????point_t?(double?a,?double?b){x?=?a,?y?=?b;}
            11?}P[N],?Q[N];
            12?int?m,?n,?cp,?cq;
            13?double?area;
            14?
            15?point_t?operator?+?(point_t?a,?point_t?b)?{?return?point_t(a.x?+?b.x,?a.y?+?b.y);}
            16?point_t?operator?-?(point_t?a,?point_t?b)?{?return?point_t(a.x?-?b.x,?a.y?-?b.y);}
            17?double?SQR(double?x?){?return?x?*?x;}
            18?double?dist(point_t?a)?{?return?sqrt(SQR(a.x)?+?SQR(a.y));}
            19?double?dist(point_t?a,?point_t?b)?{?return?dist(a-b);}
            20?double?cross_mul(point_t?a,?point_t?b)?{?return?a.x?*?b.y?-?a.y?*?b.x;}
            21?const?double?eps?=?1e-10;
            22?
            23?double?calcu(point_t?p[],?int?n,?int?cusp,?double?h)
            24?{
            25???double?ans?=?0;
            26???int?i,?j,?k,?beg?=?0,?end?=?n?-?1;
            27???if?(h?<=?p[cusp].y)?{
            28???????return?0;
            29???}
            30???for?(i?=?0;i?<?cusp;i?++)?{
            31???????if?(p[i].y?>=?h?&&?h?>=?p[i+1].y)?{
            32???????????beg?=?i;break;
            33???????}
            34???}
            35???for?(i?=?n?-?2;i?>=?cusp;i--)?{
            36???????if?(p[i].y?<=?h?&&?h?<=?p[i+1].y)?{
            37???????????end?=?i;break;
            38???????}
            39???}
            40?
            41???point_t?a?=?point_t(p[beg].x?+?(h?-?p[beg].y)?*?(p[beg+1].x?-?p[beg].x)
            42???????????????????????/?(p[beg+1].y?-?p[beg].y)?,?h);
            43???point_t?b?=?point_t(p[end].x?+?(h?-?p[end].y)?*?(p[end+1].x?-?p[end].x)
            44???????????????????????/?(p[end+1].y?-?p[end].y)?,?h);
            45???ans?+=?cross_mul(a,?p[beg+1])?+?cross_mul(p[end],?b)?+?cross_mul(b,?a);
            46???for?(i?=?beg?+?1;i?<=?end?-?1;i++)?{
            47???????ans?+=?cross_mul(p[i],?p[i+1]);
            48???}
            49???return?fabs(ans?/?2.0);
            50?}
            51?
            52?int?main()
            53?{
            54???int?testcase,?i;
            55???scanf("%d",?&testcase);
            56???while?(testcase--)?{
            57???????scanf("%lf",?&area);
            58???????scanf("%d",?&m);?for?(i?=?0;i?<?m;i++)?{?scanf("%lf?%lf",?&P[i].x,?&P[i].y);?}
            59???????scanf("%d",?&n);?for?(i?=?0;i?<?n;i++)?{?scanf("%lf?%lf",?&Q[i].x,?&Q[i].y);?}
            60???????for?(i?=?1;i?<?m-1;i++)?{
            61???????????if?(P[i-1].y?>=?P[i].y?&&?P[i].y?<=?P[i+1].y)?{
            62???????????????cp?=?i;
            63???????????}
            64???????}
            65???????for?(i?=?1;i?<?n-1;i++)?{
            66???????????if?(Q[i-1].y?>=?Q[i].y?&&?Q[i].y?<=?Q[i+1].y)?{
            67???????????????cq?=?i;
            68???????????}
            69???????}
            70???????double?L?=?min(P[cp].y?,?Q[cq].y),
            71??????????????R?=?min(min(P[0].y,?P[m?-?1].y)?,?min(Q[0].y,?Q[n?-?1].y))?;
            72???????while?(L?+?eps?<?R)?{
            73???????????double?mid?=?(L?+?R)?/?2.0;
            74???????????double?A?=?calcu(P,?m,?cp,?mid)?+?calcu(Q,?n,?cq,?mid);
            75???????????//printf("h?=?%.3f,?A?=?%.3f\n",?mid,?A);
            76???????????if?(A?<=?area)?{
            77???????????????L?=?mid;
            78???????????}else?{
            79???????????????R?=?mid;
            80???????????}
            81???????}
            82???????printf("%.3f\n",?L);
            83???}
            84???return?0;
            85?}
            86?
            87?
            88?

            posted on 2010-07-08 21:34 schindlerlee 閱讀(1655) 評論(0)  編輯 收藏 引用 所屬分類: 解題報告

            精品久久久一二三区| 丁香五月综合久久激情| 亚洲欧美伊人久久综合一区二区 | 久久久久综合国产欧美一区二区 | 亚洲国产天堂久久综合网站 | 九九久久精品国产| 国内高清久久久久久| 国产精品99久久久久久董美香| 亚洲国产成人久久精品99| 久久久噜噜噜www成人网| 久久播电影网| 狠狠干狠狠久久| 久久综合鬼色88久久精品综合自在自线噜噜| 国产成人精品综合久久久久 | 97超级碰碰碰碰久久久久| 无码任你躁久久久久久老妇App| 国产精品免费福利久久| 久久久午夜精品| 久久精品国产黑森林| 狠狠色丁香久久综合婷婷| 国产色综合久久无码有码| 亚洲国产精品无码久久九九| 国产精品久久久久久| 久久综合噜噜激激的五月天| 亚洲AV伊人久久青青草原| 久久精品国产亚洲一区二区三区| 91精品国产乱码久久久久久| 狠狠色丁香久久婷婷综合| 久久久久国产精品嫩草影院| 嫩草影院久久国产精品| 精品久久久久久| 狠狠久久亚洲欧美专区| 久久久久四虎国产精品| AV狠狠色丁香婷婷综合久久| 色综合久久久久无码专区| 伊人久久大香线蕉综合影院首页 | 久久久久亚洲爆乳少妇无| 久久久久亚洲AV无码专区桃色| 久久国产高清一区二区三区| 久久久国产精华液| 亚洲精品tv久久久久|