日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

POJ1151基本的扫描线求面积

發布時間:2025/6/17 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 POJ1151基本的扫描线求面积 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題意:
? ? ?給定n個矩形的對角坐標,分別是左下和右上,浮點型,求矩形覆蓋的面積。


思路:

? ? ? 基本的線段樹掃描線求面積,沒有坑點,不解釋了,提示一點,有的題尤其是線段樹掃描線的題需要離散化的時候建議二分去找,別map,記得之前map超時過很多次,但不是針對這個題目,這個題數據量不大,怎么都行,發現codeblock這個編譯器定義宏然后在定義結構體的時候變量名字相同導致編譯不過去,我之前用的DEV也是這么寫的,記得能編譯過去,不知道為啥。

#include<stdio.h> #include<string.h> #include<algorithm>//#define l ,mid ,t << 1 //#define mid ,r ,t << 1 | 1 #define N 105using namespace std;typedef struct {double l ,r ,h ,mk; }EDGE;double num[105*2*2] ,tmp[105*2*2]; double len[105*2*2*4]; int cnt[105*2*2*4]; EDGE E[105*2];bool camp(EDGE a ,EDGE b) {return a.h < b.h || a.h == b.h && a.mk < b.mk; }void PushUp(int l ,int r ,int t) {if(cnt[t]) len[t] = num[r] - num[l];else if(l + 1 == r) len[t] = 0;else len[t] = len[t<<1] + len[t<<1|1]; }void Update(int l ,int r ,int t ,int a ,int b ,int c) {if(a == l && b == r){cnt[t] += c;PushUp(l ,r ,t);return ;}int mid = (l + r) >> 1;if(b <= mid) Update(l,mid ,t << 1 ,a ,b ,c);else if(a >= mid) Update(mid ,r ,t << 1 | 1 ,a ,b ,c);else{Update(l ,mid ,t << 1 ,a ,mid ,c);Update(mid ,r ,t << 1 | 1 ,mid ,b ,c);}PushUp(l ,r ,t); }void BuidTree() {memset(cnt ,0 ,sizeof(cnt));memset(len ,0 ,sizeof(len));return ; }int search2(double now ,int n) {int low = 1 ,up = n ,mid ,ans;while(low <= up){mid = (low + up) >> 1;if(now <= num[mid]){ans = mid;up = mid - 1;}else low = mid + 1;}return ans; }int main () {int i ,n ,id ,cas = 1;double x1 ,y1 ,x2 ,y2;double Ans;while(~scanf("%d" ,&n) && n){for(id = 0 ,i = 1 ;i <= n ;i ++){scanf("%lf %lf %lf %lf" ,&x1 ,&y1 ,&x2 ,&y2);E[++id].l = x1;E[id].r = x2 ,E[id].h = y1 ,E[id].mk = 1;tmp[id] = x1;E[++id].l = x1;E[id].r = x2 ,E[id].h = y2 ,E[id].mk = -1;tmp[id] = x2;}sort(E + 1 ,E + id + 1 ,camp);sort(tmp + 1 ,tmp + id + 1);int n2 = n * 2;for(id = 0 ,i = 1 ;i <= n2 ;i ++){if(i == 1 || tmp[i] != tmp[i-1])num[++id] = tmp[i];}BuidTree();E[0].h = E[1].h;Ans = 0;for(i = 1 ;i <= n2 ;i ++){Ans += len[1] * (E[i].h - E[i-1].h);int l = search2(E[i].l ,id);int r = search2(E[i].r ,id);Update(1 ,id ,1 ,l ,r ,E[i].mk);}printf("Test case #%d\n" ,cas ++);printf("Total explored area: %.2lf\n\n" ,Ans);}return 0;}



總結

以上是生活随笔為你收集整理的POJ1151基本的扫描线求面积的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 免费的黄色的视频 | 丝袜脚交国产在线观看 | 久久青青草原亚洲av无码麻豆 | 黄网在线免费观看 | 天堂а√在线中文在线 | 小萝莉末成年一区二区 | 尤物在线 | 伦理片中文字幕 | 先锋资源网av | 蜜桃av成人永久免费 | 美味的客房沙龙服务 | 亚洲自拍第三页 | 91在线免费看 | 激情插插插 | xxxx69国产 | 日韩不卡高清 | 99在线小视频 | 国产亚洲av综合人人澡精品 | 春宵av| 国精产品一区一区三区免费视频 | 蜜桃视频免费网站 | 欧美性视频在线播放 | 胖女人做爰全过程 | www.夜夜爱 | 成人va在线观看 | 男女猛烈无遮挡免费视频 | 一级特黄aaaaaa大片 | 国产1页 | 天堂最新| 激情视频一区二区 | www..com黄色 | 亚洲黄色一区二区三区 | 国产av 一区二区三区 | 免费三片在线视频 | 日本一二三区不卡 | 中国精品毛片 | 中文字幕被公侵犯的漂亮人妻 | 日本人の夫妇交换 | 中国av免费 | 97毛片 | 天天爽| 美女mm131爽爽爽免费动视频 | 亚洲AV无码精品国产 | 日本高清在线播放 | 男男gay动漫 | 色综合视频网 | 国产色站 | 伊人狠狠操 | 日韩一区二区三区三四区视频在线观看 | 欧美老肥妇做.爰bbww视频 | 日本五十肥熟交尾 | 日韩在线资源 | 在线视频欧美日韩 | 五月婷婷亚洲 | 婷婷一区二区三区四区 | 免费黄色网址在线观看 | 丁香啪啪综合成人亚洲 | 色女综合| 美女一区二区视频 | 国产www| 又黄又刺激的视频 | 日本免费网站在线观看 | 亚洲狠| 男生裸体视频网站 | 久久久男人天堂 | av在哪里看| 国产又粗又猛又色 | 性欧美18一19内谢 | 亚洲成人天堂 | 久久久久人妻一区精品 | 毛片基地站 | 欧美精品1区2区 | 欧美五月激情 | 久久青青草视频 | 另类欧美尿交 | 日韩免费三级 | 丝袜中文字幕 | 青青91| 在线视频免费播放 | 中文字幕精品无码一区二区 | www久久精品 | 国产精品成人无码专区 | 高h校园不许穿内裤h调教 | 青青色在线观看 | 最好看的电影2019中文字幕 | 日韩精品在线免费 | 亚洲一级片| 永久免费av网站 | 日日日干 | 色资源av | 国产精品久久久久久婷婷天堂 | 国产顶级毛片 | 羞羞答答av | 日韩一级色片 | 九九午夜 | 操www | 欧美黄色一区二区三区 | www.久操| 日韩欧美一区二区一幕 |