{"id":1021,"date":"2024-03-18T07:51:40","date_gmt":"2024-03-17T23:51:40","guid":{"rendered":"https:\/\/nocriz.com\/?p=1021"},"modified":"2024-03-18T07:51:40","modified_gmt":"2024-03-17T23:51:40","slug":"segment-drawing","status":"publish","type":"post","link":"https:\/\/nocriz.com\/?p=1021","title":{"rendered":"Segment Drawing"},"content":{"rendered":"\n<p>\u4e0a\u4e2a\u6708\u548c\u961f\u53cb\u6253\u4e86MCPC\u3002\u5176\u4e2d\u8fd9\u9053\u9898\u5f53\u65f6\u611f\u89c9\u4e0d\u96be\u5f88\u5feb\u5c31\u8fc7\u4e86\uff0c\u7ed3\u679c\u522b\u7684\u961f\u8fc7\u7684\u4e0d\u662f\u5f88\u591a\uff0c\u53ef\u80fd\u8fd8\u662f\u6bd4\u8f83\u6709\u610f\u601d\u5427\uff01\u6302\u5728\u8fd9\u91cc\u3002<\/p>\n\n\n\n<p><a href=\"https:\/\/mcpc23.kattis.com\/contests\/mcpc23\/problems\/segmentdrawing\">https:\/\/mcpc23.kattis.com\/contests\/mcpc23\/problems\/segmentdrawing<\/a><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;bits\/stdc++.h>\nusing namespace std;\ntypedef pair&lt;int,int> pii;\n#define f first\n#define s second\ntypedef long long ll;\nint n;\ndouble ans = 0;\nll x&#91;100010], y&#91;100010], l&#91;100010], r&#91;100010];\ndouble minx&#91;100010], maxx&#91;100010];\n\nint main() {\n    cin>>n;\n    for(int i=0;i&lt;n;i++) {\n        cin>>x&#91;i]>>y&#91;i]>>l&#91;i]>>r&#91;i];\n    }\n\n    stack&lt;pii> S;\n\n    for(int i=0;i&lt;n;i++) {\n        minx&#91;i] = -1e9;\n        while(S.size() &amp;&amp; S.top().s &lt; y&#91;i]) {\n            pii c = S.top();\n            S.pop();\n            if(x&#91;i] * (y&#91;i] - c.s) + (c.f - x&#91;i]) * y&#91;i] > r&#91;i] * (y&#91;i] - c.s)) {\n                cout&lt;&lt;-1&lt;&lt;endl;\n                return 0;\n            }\n            double cx = x&#91;i] + 1.0 * (c.f - x&#91;i]) \/ (y&#91;i] - c.s) * y&#91;i];\n            minx&#91;i] = max(minx&#91;i], cx);\n        }\n        S.push(make_pair(x&#91;i],y&#91;i]));\n    }\n    while(!S.empty())S.pop();\n\n    for(int i=n-1;i>=0;i--) {\n        maxx&#91;i] = 1e9;\n        while(S.size() &amp;&amp; S.top().s &lt; y&#91;i]) {\n            pii c = S.top();\n            S.pop();\n            if(x&#91;i] * (y&#91;i] - c.s) + (c.f - x&#91;i]) * y&#91;i] &lt; l&#91;i] * (y&#91;i] - c.s)) {\n                cout&lt;&lt;-1&lt;&lt;endl;\n                return 0;\n            }\n            double cx = x&#91;i] + 1.0 * (c.f - x&#91;i]) \/ (y&#91;i] - c.s) * y&#91;i];\n            maxx&#91;i] = min(maxx&#91;i], cx);\n        }\n        S.push(make_pair(x&#91;i],y&#91;i]));\n    }\n\n    cout&lt;&lt;setprecision(15)&lt;&lt;fixed;\n    const double eps = 1e-6;\n    for(int i=0;i&lt;n;i++){\n        minx&#91;i] = max(minx&#91;i], (double)l&#91;i]);\n        maxx&#91;i] = min(maxx&#91;i], (double)r&#91;i]);\n        if(minx&#91;i] > maxx&#91;i] + eps) {\n            cout&lt;&lt;-1&lt;&lt;endl;\n            return 0;\n        }\n\n        if(minx&#91;i] > x&#91;i]) {\n            ans += sqrt(1.0*y&#91;i]*y&#91;i] + 1.0*(minx&#91;i]-x&#91;i])*(minx&#91;i]-x&#91;i]));\n        } else if (maxx&#91;i] &lt; x&#91;i]) {\n            ans += sqrt(1.0*y&#91;i]*y&#91;i] + 1.0*(maxx&#91;i]-x&#91;i])*(maxx&#91;i]-x&#91;i]));\n        } else {\n            ans += y&#91;i];\n        }\n    }\n    cout&lt;&lt;ans&lt;&lt;endl;\n    return 0;\n}<\/code><\/pre>\n ","protected":false},"excerpt":{"rendered":"<p>\u4e0a\u4e2a\u6708\u548c\u961f\u53cb\u6253\u4e86MCPC\u3002\u5176\u4e2d\u8fd9\u9053\u9898\u5f53\u65f6\u611f\u89c9\u4e0d\u96be\u5f88\u5feb\u5c31\u8fc7\u4e86\uff0c\u7ed3\u679c\u522b\u7684\u961f\u8fc7\u7684\u4e0d\u662f\u5f88\u591a\uff0c\u53ef\u80fd\u8fd8\u662f\u6bd4\u8f83\u6709\u610f\u601d\u5427\uff01\u6302\u5728 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/nocriz.com\/index.php?rest_route=\/wp\/v2\/posts\/1021"}],"collection":[{"href":"https:\/\/nocriz.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nocriz.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nocriz.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/nocriz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1021"}],"version-history":[{"count":1,"href":"https:\/\/nocriz.com\/index.php?rest_route=\/wp\/v2\/posts\/1021\/revisions"}],"predecessor-version":[{"id":1022,"href":"https:\/\/nocriz.com\/index.php?rest_route=\/wp\/v2\/posts\/1021\/revisions\/1022"}],"wp:attachment":[{"href":"https:\/\/nocriz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1021"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nocriz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1021"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nocriz.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1021"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}