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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

hdu4421 2-sat(枚举二进制每一位)

發布時間:2025/6/17 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hdu4421 2-sat(枚举二进制每一位) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題意:
? ? ? 給你一個數組b[][],在給你一些關系,問是否可以找到一個滿足限制的a[],

關系如下(圖片):



思路:
? ? ? 說到限制,而且還是兩個兩個之間的限制,那么很容易想到2-sat但是這個題目
扎一看還不像,b[i][j]不是只 0 1 2,怎么辦呢,其實我們可以一位一位枚舉,最多
也就32,對于每一位我們都判斷下,只有所有的位數都滿足了,才算存在a[],下面說下關鍵,就是怎么建圖。

a[i] | a[j] == 0 說明兩個都是0,則 ? ? ? ? ? a ?~a ,b ~b.
a[i] | a[j] == 1 說明兩個至少有一個是1則 ? ?~a ?b ,~b a.
a[i] & a[j] == 1 說明兩個都是1,則 ? ? ? ? ?~a ?a ,~b b.
a[i] & a[j] == 0 說明至少有一個0 則 ? ? ? ? b ~a ?,a ~b.
a[i] ^ a[j] == 1 說明兩個不同 則 ? ? ? ? ? ?a ~b ,b ~a ,~a b ,~b a
a[i] ^ a[j] == 0 說明兩個相同 則 ? ? ? ? ? ?a b ,b ,a ,~a ~b ,~b ~a

然后強連通判斷是否可行就行了,這里說一下,之前我強連通用的全是雙深搜的那個,一直都可以,知道今天這個題目一直超時,我一開始想不出超時的地方,只能是換了個強連通的算法,用的Tarjan結果1625ms AC了.蛋疼。


#include<stdio.h> #include<string.h> #include<stack>#define N_node 1000 + 50 #define N_edge 1000000 + 100 using namespace std;typedef struct {int to ,next; }STAR;STAR E[N_edge]; int list[N_node] ,tot; int DFN[N_node] ,LOW[N_node]; int Belong[N_node]; int Index ,num ,okk; int instack[N_node]; int B[550][550]; stack<int>st; void add(int a ,int b) {E[++tot].to = b;E[tot].next = list[a];list[a] = tot; }int minn(int x ,int y) {return x < y ? x : y; }void Tarjan(int s) {DFN[s] = LOW[s] = Index ++;st.push(s);instack[s] = 1;for(int k = list[s] ;k ;k = E[k].next){int to = E[k].to;if(!DFN[to]){Tarjan(to);LOW[s] = minn(LOW[to] ,LOW[s]);}else if(instack[to]){LOW[s] = minn(DFN[to] ,LOW[s]); }}if(LOW[s] == DFN[s]){num ++; while(1){int v = st.top();Belong[v] = num;st.pop();instack[v] = 0;if(v == s) break;}} }bool ok(int n) {memset(instack ,0 ,sizeof(instack));memset(DFN ,0 ,sizeof(DFN));memset(LOW ,0 ,sizeof(LOW));while(!st.empty()) st.pop();Index = 1 ,num = 0;for(int i = 0 ;i < n * 2 ;i ++){if(DFN[i]) continue;Tarjan(i);}for(int i = 0 ;i < n * 2 ;i += 2)if(Belong[i] == Belong[i^1]) return 0;return 1; }bool solve(int n ) {for(int i = 0 ;i < n ;i ++)if(B[i][i]) return 0;__int64 Key = 1;for(int ii = 1 ;ii <= 32 ;ii ++ ,Key *= 2){memset(list ,0 ,sizeof(list));tot = 1;for(int i = 0 ;i < n ;i ++)for(int j = 0 ;j < n ;j ++){if(i == j) continue;int now = B[i][j] & Key;if(i % 2 && j % 2){if(!now)add(i * 2 ,i * 2 + 1) ,add(j * 2 ,j * 2 + 1);else add(i * 2 + 1 ,j * 2) ,add(j * 2 + 1 ,i * 2);}else if(i % 2 == 0 && j % 2 == 0){if(!now) add(j * 2 ,i * 2 + 1) ,add(i * 2 ,j * 2 + 1);else add(i * 2 + 1 ,i * 2) ,add(j * 2 + 1 ,j * 2);}else{if(!now)add(i * 2 ,j * 2) ,add(i * 2 + 1 ,j * 2 + 1),add(j * 2 ,i * 2) ,add(j * 2 + 1 ,i * 2 + 1);elseadd(i * 2 ,j * 2 + 1) ,add(j * 2 ,i * 2 + 1),add(i * 2 + 1 ,j * 2) ,add(j * 2 + 1 ,i * 2);}}if(!ok(n)) return 0;}return 1; } int main () {int n ,i ,j;while(~scanf("%d" ,&n)){for(i = 0 ;i < n ;i ++)for(j = 0 ;j < n ;j ++)scanf("%d" ,&B[i][j]);solve(n) ? puts("YES") : puts("NO");}return 0; }

總結

以上是生活随笔為你收集整理的hdu4421 2-sat(枚举二进制每一位)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 中文 欧美 日韩 | 国产一区二区三区四区三区四 | 国产伊人自拍 | 欧美另类z0zx974 | 五月婷婷色丁香 | 高清在线一区二区 | 欧美乱子伦 | 欧美精品网 | 国产吧在线 | 日本亚洲欧美在线 | 久草福利资源在线观看 | 六月婷婷激情网 | 肥老熟妇伦子伦456视频 | 99久| 香蕉视频入口 | 亚洲一区二区三区播放 | 黄色靠逼视频 | 香蕉视频官网在线观看 | 就爱av | 中文字幕日韩欧美一区二区三区 | 精品人妻一区二区三区四区久久 | 国产在线黄色 | 97国产在线视频 | 亚洲精品一区二区三区在线观看 | 日本女教师电影 | 国产首页| 欧美黄色小说 | 超碰免费在线97 | 欧美网站在线观看 | 久久久久久国产精品免费免费 | 欧美日韩在线a | 国产成人91精品 | 污视频在线 | 欧美用舌头去添高潮 | 欧美视频久久 | 国内成人综合 | 亚洲午夜福利一区二区三区 | 日本在线网址 | 久久久99精品国产一区二区三区 | 一级性生活免费视频 | 欧美一区二区成人 | 久久久久久日产精品 | 欧美激情免费视频 | 欧美色插| aaaa级片| 色一情| 亚洲成人一级 | 天堂8中文在线 | 91精品国产高清一区二区三密臀 | 麻豆国产一区二区 | 国产美女视频免费观看下载软件 | 狠狠的干狠狠的操 | 欧洲女同同性吃奶 | 性欧美lx╳lx╳ | 国产精品久久久久免费 | 激情图片在线观看 | 色黄网站 | 亚洲精品中文字幕乱码三区 | 精品少妇久久久 | 欧美一区二区三区日韩 | 娇喘顶撞深初h1v1 | 99久久久无码国产精品不卡 | 好吊妞视频在线 | 国产美女精品久久 | 白白色视频在线 | 第一次破处视频 | 亚洲天堂二区 | 久久超碰av | brazzers欧美极品少妇 | 亚洲人成一区 | 99爱这里只有精品 | 黄色大片一级 | 熟女av一区二区三区 | 人妻熟女一区二区aⅴ水 | 精品区在线观看 | 91亚洲精品一区二区乱码 | 五月天六月婷 | 污黄啪啪网 | 东北毛片 | 高h在线观看 | 天天操天天干天天摸 | 国产女主播一区二区三区 | 国产在线观看免费高清 | 成品人视频ww入口 | 日本黄色生活片 | 亚洲天天在线 | 亚洲欧洲日韩av | 国产精品视频一二区 | 看日本毛片| 国内自拍青青草 | 亚洲欧美日韩国产 | 欧美人与zoxxxx另类 | 天天天天天天干 | 337p粉嫩大胆噜噜噜噜69影视 | 久草成人| www.久久色 | 亚洲国产精品99 | 少妇高潮一区二区三区99 | 天堂av一区二区 |