題目傳送門
同性必定不同色
必有一個同色異性,且不相互不喜歡
我們發現,我們問題比較大的就是如何確定性別問題。我們可以一個一個加進去,在原來已經確定了的二分圖上增加新的性別關系,這個可以用線段樹上二分找到。
設找到的集合為 \(S\),元素為 \(S_0,S_1,...\),那么你可以發現 \(|S|\) 只有兩種情況。
這種時候說明 \(L_{L_x}=x\),所以 \(S_0\) 就是與 \(x\) 同色的。
這個時候 \(S_0,S_1,S_2\) 就是喜歡 \(x\),被 \(x\) 喜歡的,以及與 \(x\) 同色的異性的。找到與 \(x\) 同色的很簡單,直接選兩個出來,如果 \(Query(p)=1\) 的話就說明剩下哪一個就是與 \(x\) 同色的異性。
#include "chameleon.h"#include<bits/stdc++.h>using namespace std;#define Int register int#define MAXN 1005template <typename T> inline void read (T &t){t = 0;char c = getchar();int f = 1;while (c < '0' || c > '9'){if (c == '-') f = -f;c = getchar();}while (c >= '0' && c <= '9'){t = (t << 3) + (t << 1) + c - '0';c = getchar();} t *= f;}template <typename T,typename ... Args> inline void read (T &t,Args&... args){read (t);read (args...);}template <typename T> inline void write (T x){if (x < 0){x = -x;putchar ('-');}if (x > 9) write (x / 10);putchar (x % 10 + '0');}template <typename T> inline void chkmax (T &x,T y){x = max (x,y);}template <typename T> inline void chkmin (T &x,T y){x = min (x,y);}vector <int> G[MAXN];bool b[MAXN],used[MAXN];int n,t[2][MAXN],col[MAXN],lov[MAXN],siz[2];void dfs (int x,int c){col[x] = c;for (Int to : G[x]) if (col[to] == -1) dfs (to,c ^ 1);}void getcol (int x){for (Int i = 1;i < x;++ i) col[i] = -1;for (Int i = 1;i < x;++ i) if (col[i] == -1) dfs (i,0);siz[0] = siz[1] = 0;for (Int i = 1;i < x;++ i) t[col[i]][++ siz[col[i]]] = i;}bool checkit (int c,int l,int r,int x){vector <int> S;S.clear (),S.push_back (x);for (Int i = l;i <= r;++ i) if (!b[t[c][i]]) S.push_back (t[c][i]);return Query (S) < S.size();}int findit (int c,int l,int r,int x){if (l == r) return t[c][l];int mid = (l + r) >> 1;return checkit (c,l,mid,x) ? findit (c,l,mid,x) : findit (c,mid + 1,r,x);}void makeit (int Sn){int n = Sn << 1;for (Int i = 1;i <= n;++ i){getcol (i),memset (b,0,sizeof (b));for (Int c = 0;c < 2;++ c){while (checkit (c,1,siz[c],i)){int pos = findit (c,1,siz[c],i);G[i].push_back (pos),G[pos].push_back (i),b[pos] = 1;}}}vector <int> S;S.resize (3);for (Int i = 1;i <= n;++ i){if (G[i].size() == 1){if (used[i]) continue;used[i] = used[G[i][0]] = 1,Answer (i,G[i][0]);continue;}S[0] = i,S[1] = G[i][0],S[2] = G[i][1];if (Query (S) == 1){swap (G[i][0],G[i][2]),lov[G[i][0]] = i;continue;}S[2] = G[i][2];if (Query (S) == 1){swap (G[i][0],G[i][1]),lov[G[i][0]] = i;continue;}lov[G[i][0]] = i;}for (Int i = 1;i <= n;++ i) if (!used[i]){if (lov[i] == G[i][1]) Answer (i,G[i][2]),used[i] = used[G[i][2]] = 1;else Answer (i,G[i][1]),used[i] = used[G[i][1]] = 1;} }void Solve (int N){makeit (N);}
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...
在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...
在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...
如何網上查詢交通違章?兩種查詢1.通過手機軟件交管12123,綁定機動車駕駛證進行查詢。2.攜帶機動車行駛證直接到車管所或公安機關交通管理部門查詢。無論哪種,都可以有效發現車輛的違法行為。道路交通管理部門直接開具的現場罰單的違法行為,需要按照罰單上的處理時間進行處理,否則影響違法行為,處理時收取滯納金。攝像頭拍到的違法行為可以在年檢前處理,不受影響。...
哪里有九十年代磁帶正版批發?各地的文化用品交易市場都有批發90年代的正版磁帶。北京圖書大廈網上書店在北京圖書大廈網上書店都有賣什么的?,相當于北京圖書大廈的網上交易平臺,里面包括大部分圖書、音像資料等。我買過一次磁帶,價格比當當和卓悅高10%左右。很多書和音像資料都是沒有照片的正品,一般都是郵政快遞郵寄。北京哪的音像店最全,都什么價位?1 .東環廣場底樓,D9不錯,一碟十五。2.新街口附近有很多碟...
我想知道常熟最便宜的服裝批發市場在哪里,我要具體地點和位置? ;地址在常熟招商城長途汽車站對面的招商場,與常熟招商城長途汽車站門對門。江蘇常熟招商城是最大的服裝批發市場,包括常熟飛越彩虹服裝城、常熟凱萊女裝有限公司;;常熟國際服裝城寫字樓、常熟招商市場、常熟環球服裝城、常熟時裝中心、男裝店穿中心等等。其實你去招商局城隨便問問,一般都知道,關鍵看你想要什么樣的衣服。常熟哪里買大碼女裝?常熟大碼女裝...