• <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 閱讀(1644) 評論(0)  編輯 收藏 引用 所屬分類: 解題報告

            青青青国产成人久久111网站| 精品久久久无码人妻中文字幕| 四虎亚洲国产成人久久精品| 久久婷婷人人澡人人| 国产成人精品久久综合 | 亚洲国产精品无码久久久秋霞2 | 久久久久亚洲AV成人网人人软件 | 亚洲午夜精品久久久久久app| 久久天天躁狠狠躁夜夜不卡| 久久精品国产亚洲麻豆| 亚洲国产精品狼友中文久久久| 亚洲国产精品无码久久一线 | 久久精品国产一区二区| 久久亚洲私人国产精品vA| 狠狠色伊人久久精品综合网 | 亚洲精品无码久久不卡| 国产精品久久久久AV福利动漫| 久久夜色撩人精品国产| 亚洲嫩草影院久久精品| 色偷偷久久一区二区三区| 久久激情五月丁香伊人| 精品久久香蕉国产线看观看亚洲| 一本综合久久国产二区| 国内精品久久久久久麻豆| 99久久精品国产高清一区二区 | 99久久精品国产一区二区蜜芽| 久久亚洲精品国产精品| 狠狠色噜噜色狠狠狠综合久久 | 久久99精品国产麻豆宅宅| 久久一本综合| 无码任你躁久久久久久久| 久久精品无码一区二区三区免费| 欧美综合天天夜夜久久| 国内精品伊人久久久久| 国产精品久久99| 国产精品99久久久久久宅男 | 免费一级欧美大片久久网| 亚洲狠狠综合久久| 久久se精品一区精品二区国产| 精品久久人人妻人人做精品| 久久成人永久免费播放|