日韩性视频-久久久蜜桃-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的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 伊人av在线播放 | 西西人体大胆4444ww张筱雨 | 久久久久久久色 | 99综合久久 | 国语对白对话在线观看 | 久久免费黄色 | 麻豆网站在线看 | 最新极品jizzhd欧美 | 波多野结衣影院 | 国产精品视频播放 | 91视色| 亚洲精品一区在线观看 | 久久97精品久久久久久久不卡 | 糖心视频在线 | 人妻少妇无码精品视频区 | 亚洲精选在线观看 | 精品久久久久久久久久久久久久久 | 欧美性色视频 | www.久久久久久久久久 | 一区成人| 法国少妇愉情理伦片 | 欧美国产第一页 | 在线香蕉| aaa国产视频 | 人人爱操| 色噜噜影院 | 干日本少妇首页 | 少妇无码吹潮 | 国产全是老熟女太爽了 | 亚洲精品一区二区三区四区 | 国产高清不卡 | 在线免费a视频 | 久久国产精品-国产精品 | 午夜影院在线观看18 | 黄色av观看| 亚洲在线激情 | 欧美日日 | 天天舔天天干 | 国产在线免费av | www日本xxx | 日本高潮视频 | 黄页网站免费在线观看 | 少妇高潮惨叫久久久久久 | 伊人论坛 | 国产乱人乱精一区二视频国产精品 | 国产综合视频在线 | 欧美一区二区性久久久 | 韩国女主播av | 日本韩国视频 | 17草在线| 国产激情免费 | 久久神马影院 | 自拍天堂 | 69av在线播放 | 国产精品久久久久久久毛片 | 午夜视频 | 成人国产片女人爽到高潮 | www.成人av.com| 亚洲一区精品视频 | 久久午夜鲁丝片 | 欧美插插视频 | 成人二区三区 | 国产亚洲精品久久久久久777 | 猛1被调教成公厕尿便失禁网站 | 亚洲国产精品激情在线观看 | 91成人免费在线观看视频 | 婷婷看片| 看看毛片| 成人免费观看av | 激情综合区 | 免费黄色在线网址 | 日本成人黄色片 | 伊人春色在线观看 | 国产理论片在线观看 | 香蕉视频在线观看网站 | 国产视频一区二区不卡 | 88国产精品视频一区二区三区 | 国产精品亚洲五月天丁香 | 亚洲国产日韩在线观看 | 四虎国产成人永久精品免费 | 91麻豆精品久久久久蜜臀 | 国产精品视频看看 | 亚洲快播| 中文字幕高潮 | 九九九热 | 黄色录像毛片 | 国产精品久久久久久人妻精品动漫 | 国产精品毛片一区二区在线看舒淇 | 久久精彩免费视频 | 欧洲精品无码一区二区 | 亚洲美女视频 | 最好看的日本字幕mv视频大全 | 91久久爽久久爽爽久久片 | 97超碰总站 | 捆绑少妇玩各种sm调教 | 国产精品suv一区二区三区 | 超碰在线个人 | 天天射天天干天天 | www.五月婷婷.com |