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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

hdu3715 二分+2sat+建图

發布時間:2025/6/17 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hdu3715 二分+2sat+建图 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題意:
? ? ? 給你一個遞歸公式,每多一層就多一個限制,問你最多能遞歸多少層。
思路:
? ? ?先分析每一層的限制 x[a[i]] + x[b[i]] != c[i],這里面x[] = 0,1,c[i] = 0,1,2

如果我們把 x[]=0,1想成取或不取,就是基礎的關系,那么這個題目就可以直接抽象成2sat問題,然后我們二分去枚舉深度,每次根據2sat的結果判斷二分走向,我的2sat用的是雙深搜的強連通,用那個t打頭的也行,隨意,這樣這個題目就ok了,對了下面總結下2sat的建圖吧,這個題目也能用上。


#include<stdio.h> #include<string.h> #include<stack>#define N_node 500 + 10 #define N_edge 100000 + 100 using namespace std;typedef struct {int to ,next; }STAR;STAR E1[N_edge] ,E2[N_edge]; int list1[N_node] ,list2[N_node] ,tot; int Belong[N_node] ,cnt; int mark[N_node]; int A[11000] ,B[11000] ,C[11000]; 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)if(!mark[E1[k].to]) DFS1(E1[k].to);st.push(s); }void DFS2(int s) {mark[s] = 1;Belong[s] = cnt;for(int k = list2[s] ;k ;k = E2[k].next)if(!mark[E2[k].to]) DFS2(E2[k].to); }bool ok(int mid ,int n) {memset(list1 ,0 ,sizeof(list1));memset(list2 ,0 ,sizeof(list2));tot = 1;for(int i = 1 ;i <= mid ;i ++){int x = A[i] * 2 ,xx = A[i] * 2 + 1;int y = B[i] * 2 ,yy = B[i] * 2 + 1;if(C[i] == 0) add(xx ,y) ,add(yy ,x);if(C[i] == 1) add(x ,y) ,add(y ,x) ,add(xx ,yy) ,add(yy ,xx);if(C[i] == 2) add(y ,xx) ,add(x ,yy);}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 && !mk ;i += 2)if(Belong[i] == Belong[i^1]) mk = 1;return !mk; }int main () {int t ,n ,m ,i;scanf("%d" ,&t);while(t--){scanf("%d %d" ,&n ,&m);for(i = 1 ;i <= m ;i ++)scanf("%d %d %d" ,&A[i] ,&B[i] ,&C[i]);int low ,mid ,up ,ans = 0;low = 0 ,up = m;while(low <= up){mid = (low + up) >> 1;if(ok(mid ,n))ans = mid ,low = mid + 1;else up = mid - 1;}printf("%d\n" ,ans);}return 0; }

總結

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

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

主站蜘蛛池模板: 欧日韩一区二区三区 | 国产欧美精品aaaaaa片 | 精品色综合| 免费黄av | 国产原创精品 | 男女无遮挡网站 | 日日爱网站 | free性欧美hd精品4k | 久久久久久久黄色片 | 漂亮人妻被黑人久久精品 | 婷婷视频 | 亚洲精品中文字幕 | 欧美在线一二三 | 百合sm惩罚室羞辱调教 | 一级黄色录相 | 无码少妇一区二区 | 韩日产理伦片在线观看 | 91综合色| 中文字幕成人动漫 | 欧美一区久久 | 欧美日韩国产成人精品 | 国产精品19p | 在线a级 | 午夜影院18| 在线艹| 日日精品 | 欧美在线看片 | 娇妻被老王脔到高潮失禁视频 | 97中文字幕 | 成人黄色在线播放 | 亚洲精久久 | 素人fc2av清纯18岁 | 免费看大片a | 九九色| 东北高大丰满bbbbzbbb | 超碰在线播放97 | 欧美三级午夜理伦三级老人 | 男女av在线 | 综合 欧美 亚洲日本 | 国产免费一区,二区 | 日日操夜夜干 | 国产精品1234区 | 日本亚洲网站 | av综合久久| 男女床上拍拍拍 | 男女日屁视频 | 国产成人久久婷婷精品流白浆 | 国产免费一区二区三区四区五区 | 伊人五月综合 | 国产一区二区精品久久 | 视频在线亚洲 | 国产精品一二三区视频 | 禁漫天堂黄漫画无遮挡观看 | 久久中文免费视频 | 日韩午夜av| 国产精品资源在线观看 | av小片| 国产精品久久久精品三级 | 麻豆国产一区二区三区 | 欧美卡一卡二卡三 | 欧美丰满一区二区免费视频 | 在线精品亚洲欧美日韩国产 | 91看片免费看 | 爱爱福利社 | 最新国产拍偷乱偷精品 | a一级免费视频 | 美女毛片视频 | 亚洲福利二区 | 国产精品一级二级 | 水蜜桃色314在线观看 | 青青青草国产 | 91涩涩涩| 狠狠干人人干 | xxsm.com| av免费观看网 | 91免费版在线看 | 亚洲精品一区二区三区蜜桃 | av网站在线播放 | 在线观看免费视频 | jizz自拍| 超清av在线 | 成人a在线| 国模大尺度视频 | 欧美一区二区视频在线 | 久久伊人草 | 日韩黄色一区 | 精品无码一区二区三区蜜臀 | 爱爱精品视频 | 国内性爱视频 | 国产免费又黄又爽又色毛 | 色一情一区二 | 天天插av | 国产福利不卡 | 网友自拍av| 中国大陆高清aⅴ毛片 | 国产6区 | 青青伊人网| 国产免费观看久久黄av片 | 国产精品免费视频一区 |