5 2 省選模擬賽 或許 線型基

2022-02-04 21:29:26 字數 1137 閱讀 7963

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學長出的題,引文最小割題目...