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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

hdu3622 二分+2sat

發布時間:2025/6/17 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hdu3622 二分+2sat 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題意:
? ? ?給你N組炸彈,每組2個,讓你在這N組里面選取N個放置,要求(1)每組只能也必須選取一個(2)炸彈與炸彈之間的半徑相等(3)不能相互炸到對方。求最大的可放置半徑。


思路:

? ? ?二分去枚舉半徑,然后用2sat去判斷是否可行,在2sat里,每組炸彈的兩個是正常對,任何兩組的任何兩個距離小于等于mid那么這兩個是矛盾對。這樣強連通縮短,然后判斷有沒有一組是在同一個強連通塊里的,沒有那么就ok繼續更新二分查找答案。

#include<stdio.h> #include<string.h> #include<math.h> #include<stack>#define N_node 200 + 10 #define N_edge 100000 + 100 using namespace std;typedef struct {int to ,next; }STAR;typedef struct {double x1 ,x2 ,y1 ,y2; }NODE;STAR E1[N_edge] ,E2[N_edge]; NODE node[111]; int list1[N_node] ,list2[N_node] ,tot; int Belong[N_node] ,cnt; int mark[N_node]; stack<int>st;void add(int a , int b) {E1[++tot].to = b;E1[tot].next = list1[a];list1[a] = tot;E2[tot].to = a;E2[tot].next = list2[b];list2[b] = tot; }void DFS1(int s) {mark[s] = 1;for(int k = list1[s] ;k ;k = E1[k].next){int xin = E1[k].to;if(!mark[xin]) DFS1(xin);}st.push(s); }void DFS2(int s) {mark[s] = 1;Belong[s] = cnt;for(int k = list2[s] ;k ;k = E2[k].next){int xin = E2[k].to;if(!mark[xin]) DFS2(xin);} }double diss(double x1 ,double y1 ,double x2 ,double y2) {double tmp = (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2);return sqrt(tmp); }bool ok(double mid ,int n) {memset(list1 ,0 ,sizeof(list1));memset(list2 ,0 ,sizeof(list2));tot = 1;for(int i = 0 ;i < n ;i ++)for(int j = i + 1 ;j < n ;j ++){int a ,b;double dis = diss(node[i].x1 ,node[i].y1 ,node[j].x1 ,node[j].y1);if(dis <= mid){a = i * 2 ,b = j * 2;add(a ,b^1) ,add(b ,a^1);}dis = diss(node[i].x1 ,node[i].y1 ,node[j].x2 ,node[j].y2);if(dis <= mid){a = i * 2 ,b = j * 2 + 1;add(a ,b^1) ,add(b ,a^1);}dis = diss(node[i].x2 ,node[i].y2 ,node[j].x1 ,node[j].y1);if(dis <= mid){a = i * 2 + 1,b = j * 2;add(a ,b^1) ,add(b ,a^1);}dis = diss(node[i].x2 ,node[i].y2 ,node[j].x2 ,node[j].y2);if(dis <= mid){a = i * 2 + 1,b = j * 2 + 1;add(a ,b^1) ,add(b ,a^1);}}memset(mark ,0 ,sizeof(mark));while(!st.empty())st.pop();for(int i = 0 ;i < n * 2 ;i ++)if(!mark[i]) DFS1(i);memset(mark ,0 ,sizeof(mark));cnt = 0;while(!st.empty()){int xin = st.top();st.pop();if(mark[xin]) continue;++cnt;DFS2(xin);}int mk = 0;for(int i = 0 ;i < n * 2 ;i += 2){if(Belong[i] == Belong[i^1])mk = 1;}return !mk; }int main () {int n ,i;while(~scanf("%d" ,&n)){for(i = 0 ;i < n ;i ++)scanf("%lf %lf %lf %lf" ,&node[i].x1 ,&node[i].y1 ,&node[i].x2 ,&node[i].y2);double low ,mid ,up ,ans = 0;low = 0 ,up = 2000000000;for(i = 1 ;i <= 100 ;i ++){mid = (low + up) / 2;if(ok(mid ,n))ans = low = mid;else up = mid;}printf("%.2lf\n" ,ans/2);}return 0; }

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的hdu3622 二分+2sat的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 男女视频免费看 | 光棍影院手机版在线观看免费 | 一区二区男女 | 国产精品人人做人人爽人人添 | 国产无遮挡18禁无码网站不卡 | 高清一区二区三区视频 | 日韩 欧美 亚洲 | 亚洲欧美乱综合图片区小说区 | 都市激情久久 | 一区二区免费在线播放 | 午夜视频精品 | 久免费一级suv好看的国产 | 四虎午夜影院 | 中文字幕亚洲精品在线观看 | 少妇一晚三次一区二区三区 | 偷拍久久久| 久久免费播放视频 | 91高跟黑色丝袜呻吟在线观看 | 久草视频免费在线 | av基地网| 六月婷婷中文字幕 | 直接看毛片 | 亚洲国产理论 | 日本一区二区三区四区五区 | 黄色网日本 | 亚洲成人日韩在线 | 中国一级黄色 | 国产精品久久综合青草亚洲AV | 国产91一区二区三区在线精品 | 国产精品视频大全 | 日本福利小视频 | 欧美日韩亚洲一区二区 | 少妇毛片一区二区三区粉嫩av | 加勒比精品| 日韩最新中文字幕 | 伊伊综合网 | 91亚洲视频在线观看 | 疯狂做受xxxx国产 | 国产淫视| 国产成人午夜高潮毛片 | 中文字幕一区二区三区av | 日本不卡一区二区 | 久久色在线观看 | 中国女人内谢69xxxxⅹ视频 | 日本精品国产 | 青青视频一区二区 | 草色噜噜噜av在线观看香蕉 | 麻豆国产一区 | 国产精品av一区二区 | 成人免费无码大片a毛片抽搐色欲 | www.brazzers.com| 国产宾馆自拍 | 国产精品手机在线观看 | 国产麻豆一区二区三区 | 久草视| 国产有码视频 | 欧美一卡二卡三卡 | 精品无码在线观看 | 伊人伊人伊人伊人 | 美女视频在线免费观看 | 夜夜嗨一区二区 | 亚洲一区二区三区精品视频 | 岛国av免费在线观看 | 天天舔天天射 | 人人搞人人| 麻豆一区在线 | 久久亚洲无码视频 | 丰满少妇一区二区三区专区 | 呦女精品 | 狠狠艹av | 伊人365影院 | 一个色的综合 | 亚洲无吗在线观看 | 免费人成在线 | 国产激情网站 | 超碰超碰超碰超碰超碰 | 久久情趣视频 | 久久一区二区三区四区五区 | 韩漫动漫免费大全在线观看 | 国产毛片久久久久 | 亚洲国产一区二区三区a毛片 | 性欧美18—19sex性高清 | 九草视频在线观看 | 巨胸爆乳美女露双奶头挤奶 | 老司机精品福利视频 | 亚洲在线观看免费 | 久久久五月 | 中日韩精品视频在线观看 | 国产亚洲一区在线 | 精品久久久久一区二区 | 亚洲精品视频网址 | 日韩在线不卡视频 | 97精品人妻一区二区三区 | 白丝美女被草 | 91天堂视频| 久久6视频 | 欧美无吗 | 在线免费观看污片 | 一区二区网 |