link:或許
考試的時候 失了智 完全沒想到這道題的做法。
以為很難 原因是沒有認真分析 (當時狀態確實不好
只草草的打了暴力 包括暴力只能跑到14分 發現很多人a掉了這道題就發現隱隱不對。
考慮 此時能用的數字為 s1,s2,s3...
對於乙個數字x 那麼此時 x^s1 和 x是聯通的 容易發現 xs1s2也和x是聯通的。
不斷拓展下去 容易發現x能異或出來的數字和s所形成的線型基的大小有關。
且最終答案為 \(2^\) 其中sz為線型基的大小。
那麼題目就是 每次加入乙個數字x 刪除乙個數字x 維護線型基的大小。
解決這個問題的經典做法是線段樹分治。
不過兩個log過不了。
為了防止出現這種情況 每次在嘗試加入線型基的時候 維護乙個時間最大的線型基。
這樣可以保證 加入x之後 之前沒有可以加進去的x了。所以加入的操作為 遇到能影響當前x的 比一下時間 盡量使得時間長的在主元的位置上。
考慮刪除 直接找到當前的時間要被刪除的x刪掉即可。
綜上刪除是合法的 刪除x 不會出現之前闡述的情況 也不會存在x影響的點。使用map會被卡常 sort比map快多了。
const int maxn=2000010,n=40;
int n,q;
int w[maxn],a[maxn];
int f[n],c[n],sz;
struct wyt[maxn];
inline int cmp(wy a,wy b)
inline void insert(int x,int w)
else
} }}
inline void del(int x)
}int main()
; if(op==1)a[i]=x;
} sort(t+1,t+1+q,cmp);
rep(1,q,i)
if(!(j&1))
}} int ans=0;
rep(1,q,i)
put(ans);
return 0;
}
省選模擬52
實際上是個構造題。正解給的構造方法是首先找出任意一棵生成樹,對於非生成樹上的邊,假如這些邊構成了乙個二分圖,那麼可以對這兩個二分圖分別染色,最後討論一下四種顏色。否則,說明剩餘的邊中一定存在奇環,那麼由於生成樹的存在說明剩餘的邊一定是聯通的,找到任意乙個奇環並輸出即可。對於subtask1,直接對於...
省選模擬52 題解
兩個二分圖,可以直接對應出乙個四分圖來。第二個操作要求連通性,所以可以考慮先生成一棵樹,這棵樹顯然是二分圖。對於剩下的邊,考慮是否形成二分圖。如果能夠形成,那麼可以對應出合法的四分圖。如果不能,那麼說明剩下的邊中存在奇環。因為樹邊已經連通了,所以這個奇環是合法解。第乙個包考察閱讀理解,第二三個包發現...
省選模擬賽 project
最小割問題。建如下邊 s,i,ai 代表選用a語言編寫第i個專案 i,t,bi 代表選用a語言編寫第i個專案 其後注意要反向連邊 i,j,d 代表選用b語言編寫第i個專案,選用a語言編寫第j個專案 j,i,c 代表選用a語言編寫第i個專案,選用b語言編寫第j個專案 litc學長出的題,引文最小割題目...