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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

BZOJ 1604 [Usaco2008 Open]Cow Neighborhoods 奶牛的邻居:队列 + multiset + 并查集【曼哈顿距离变形】...

發布時間:2024/4/17 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BZOJ 1604 [Usaco2008 Open]Cow Neighborhoods 奶牛的邻居:队列 + multiset + 并查集【曼哈顿距离变形】... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目鏈接:http://www.lydsy.com/JudgeOnline/problem.php?id=1604

題意:

  平面直角坐標系中,有n個點(n <= 100000,坐標范圍10^9)。

  給定r,當兩個點的曼哈頓距離<=r時,認為這兩個點在同一個“群”中。

  問你共有多少個群,以及點的數量最多的群有多少個點。

?

題解:

  本題的核心在于:如何枚舉一個點周圍滿足“曼哈頓距離<=r”的點。

  由于 曼哈頓距離 = |x1 - x2| + |y1 - y2|。

  x和y相互影響,不能單純按x或y排序,枚舉所有點總復雜度為O(N^2)。

?

  所以要用到曼哈頓距離的另一種形式:

    設X = x + y , Y = x - y

    d(曼哈頓距離) = max(|X1-X2|, |Y1-Y2|)

  將每個點的X = x + y,Y = x - y,這就將X與Y的關系分離開了。

  

  將所有點按X排序。

  當前考慮到點i。

  用一個隊列(X升序),保證隊列中的所有X滿足要求,否則不斷刪去隊首。

  用一個multiset(Y升序),找到i的前驅pre和后繼suc,如果i與pre(或suc)的Y滿足要求,則合并(并查集)。

?

  最后統計一下每個群就好了。

?

AC Code:

1 // |x1-x2| + |y1-y2| 2 // | (x1+y1) - (x2+y2) | 3 // | (x1-y1) - (x2-y2) | 4 // X = x + y 5 // Y = x - y 6 // d = max(|X1-X2|, |Y1-Y2|) <= r 7 #include <iostream> 8 #include <stdio.h> 9 #include <string.h> 10 #include <algorithm> 11 #include <set> 12 #define MAX_N 100005 13 #define INF 100000000 14 15 using namespace std; 16 17 struct Coor 18 { 19 int x; 20 int y; 21 int idx; 22 Coor(int _x,int _y,int _idx) 23 { 24 x=_x; 25 y=_y; 26 idx=_idx; 27 } 28 Coor(){} 29 friend bool operator < (const Coor &a,const Coor &b) 30 { 31 return a.y!=b.y?a.y<b.y:a.idx<b.idx; 32 } 33 }; 34 35 int n,r; 36 int ans=1; 37 int counter=0; 38 int head=0; 39 int par[MAX_N]; 40 int cnt[MAX_N]; 41 Coor c[MAX_N]; 42 multiset<Coor> mst; 43 44 inline bool cmp_x(const Coor &a,const Coor &b) 45 { 46 return a.x<b.x; 47 } 48 49 void init_union_find() 50 { 51 for(int i=0;i<n;i++) 52 { 53 par[i]=i; 54 } 55 } 56 57 int find(int x) 58 { 59 return par[x]==x?x:par[x]=find(par[x]); 60 } 61 62 void unite(int x,int y) 63 { 64 int px=find(x); 65 int py=find(y); 66 if(px==py) return; 67 par[px]=py; 68 } 69 70 void read() 71 { 72 cin>>n>>r; 73 int a,b; 74 for(int i=0;i<n;i++) 75 { 76 cin>>a>>b; 77 c[i].x=a+b; 78 c[i].y=a-b; 79 c[i].idx=i; 80 } 81 } 82 83 void solve() 84 { 85 init_union_find(); 86 sort(c,c+n,cmp_x); 87 mst.insert(Coor(0,INF,0)); 88 mst.insert(Coor(0,-INF,0)); 89 mst.insert(c[head]); 90 for(int i=1;i<n;i++) 91 { 92 while(c[i].x-c[head].x>r) 93 { 94 mst.erase(c[head]); 95 head++; 96 } 97 multiset<Coor>::iterator it=mst.lower_bound(c[i]); 98 Coor suc=*it; 99 Coor pre=*--it; 100 if(c[i].y-pre.y<=r) unite(pre.idx,c[i].idx); 101 if(suc.y-c[i].y<=r) unite(suc.idx,c[i].idx); 102 mst.insert(c[i]); 103 } 104 memset(cnt,0,sizeof(cnt)); 105 for(int i=0;i<n;i++) 106 { 107 int p=find(i); 108 if(cnt[p]==0) counter++; 109 cnt[p]++; 110 ans=max(ans,cnt[p]); 111 } 112 } 113 114 void print() 115 { 116 cout<<counter<<" "<<ans<<endl; 117 } 118 119 int main() 120 { 121 read(); 122 solve(); 123 print(); 124 }

?

轉載于:https://www.cnblogs.com/Leohh/p/7599009.html

總結

以上是生活随笔為你收集整理的BZOJ 1604 [Usaco2008 Open]Cow Neighborhoods 奶牛的邻居:队列 + multiset + 并查集【曼哈顿距离变形】...的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 四虎影院在线免费播放 | 亚洲视频一区在线观看 | 蜜桃成人在线视频 | 亚洲性猛交xxxx乱大交 | 欧美日韩视频一区二区 | 天天操综合网 | 美女穴穴 | 男女做爰真人视频直播 | 国产精品人人爽人人爽 | 欧美成人午夜免费视在线看片 | 国产欧美又粗又猛又爽 | 99精品小视频 | 麻豆综合| 欧美另类视频在线观看 | 男女黄色片 | 相亲对象是问题学生动漫免费观看 | 精品国产999久久久免费 | 国产美女无遮挡免费 | 成人h动漫精品一区 | 影音先锋中文字幕人妻 | av网站大全在线观看 | 男人天堂2014 | 中文字幕免费视频观看 | 成人性生交7777 | 成年人网站免费在线观看 | 欧美激情在线观看视频 | 美女极度色诱图片www视频 | 四虎一国产精品一区二区影院 | 美女无遮挡免费网站 | 中文字幕15页 | 一卡二卡三卡四卡 | 久久久久久69 | 少妇在线观看 | 欧美伦理在线观看 | 国产乱码精品一区二区三区五月婷 | 精品少妇人妻av免费久久洗澡 | eeuss鲁丝片一区二区三区 | av网站大全在线观看 | xxxxwwww在线观看| 国产裸体网站 | 成年人免费网站视频 | 男女视频一区二区 | 97人妻一区二区精品免费视频 | 麻豆免费视频网站 | 意大利性荡欲xxxxxx | 婷婷狠狠爱 | 国产欧美日韩久久 | 国产18av | 欧美yyy | 久久在线电影 | 午夜理伦三级理论 | 在线免费看黄色 | av女优天堂在线观看 | 91高清免费| 91插插插永久免费 | 少妇人妻丰满做爰xxx | 精品少妇一区二区三区免费观 | 欧美干干 | 呦呦色 | 国产精品av在线播放 | 中文乱码人妻一区二区三区视频 | 粉嫩精品久久99综合一区 | 美女裸片 | 亚洲精品色午夜无码专区日韩 | 在线看你懂得 | 游戏涩涩免费网站 | 99爱爱 | 一级黄色播放 | 国产精品一区二区三区四区在线观看 | 无码人妻精品中文字幕 | av色在线观看| 东北女人av | 男人添女人下部高潮视频 | 国产欧美123| 91精品国产色综合久久不卡粉嫩 | 免费av动漫 | 18国产免费视频 | 91av在线视频播放 | 什么网站可以看毛片 | 阿v视频在线免费观看 | 久草热在线 | 秋霞一级视频 | 99香蕉网 | 国产精品www在线观看 | 国产美女白浆 | 一区二区三区四区五区六区 | 亲切的金子餐桌片段的金子 | 手机看片国产精品 | 完全免费在线视频 | 国产jjizz一区二区三区视频 | 亚洲黄色大全 | 毛片资源 | 亚洲一区二区网站 | 亚洲香蕉中文网 | 凹凸国产熟女精品视频 | 久热这里有精品 | 深夜成人福利 | 中文字幕一区二区av | 成人在线视频在线观看 |