5 30 省選模擬賽 方格操作 掃瞄線 特殊性質

2022-02-04 19:10:37 字數 1258 閱讀 3352

link:方格操作

首先想到的是暴力模擬 經過畫圖不斷尋找不可解得情況 可以發現 如果可解 一定在兩步之內。

證明我也不會經過不斷畫圖 可以發現是這個樣子的 不行就暴力打表.

那麼模擬兩遍 看是否都變成0即可。

考慮 如何模擬這個過程 容易想到 乙個格仔之後的狀態= 當前狀態 ^ 行1的奇偶性 ^ 列1的奇偶性 ^ 當前狀態.

那麼得到 乙個格仔的狀態=行的奇偶^列的奇偶。

那麼每次模擬我們只需要知道每一行的1的個數 和 每一列的1的個數即可。

容易發現預處理之後 模擬的過程也可以不斷維護這兩個東西.

預處理 容易想到掃瞄線。

const int maxn=200010;

int n,m,q,cnt1;

struct wyt[maxn],g[maxn];

inline int cmp(wy a,wy b)

inline void pushdown(int p)

inline void change(int p,int l,int r)

int mid=(l(p)+r(p))>>1;

if(tag(p))pushdown(p);

if(l<=mid)change(zz,l,r);

if(r>mid)change(yy,l,r);

cnt(p)=cnt(zz)+cnt(yy);

}int main()

; g[cnt1]=(wy);

t[++cnt1]=(wy);

g[cnt1]=(wy);

} sort(t+1,t+1+cnt1,cmp);

sort(g+1,g+1+cnt1,cmp);

int flag=1;

build(1,1,m);

rep(1,n,i)//對行進行

build(1,1,n);

flag=1;

rep(1,m,i)

ll ans=0;

for(int t=1;t<=2;++t)

rep(1,n,i)if(h[i])return puts("-1"),0;

putl(ans);

return 0;

}

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

mirror 省選模擬賽

標籤 狀壓dp 結論 當最優情況下,每行每列鏡子的個數都為偶數 題目可以轉化為擺放鏡子,使得格仔中產生的光環最長 所以不需要考慮鏡子到底放什麼方向 於是我們直接狀壓一列鏡子當前的奇偶性進行轉移 時間複雜度o 4n n m2 o 4 n n m2 include include include inc...

Sequence 省選模擬賽

標籤 貪心 給定乙個整數數列 a,定義f a max1 inaj aif a max1 i naj ai 保證 f a 0。你需要求出至少需要修改 a 的多少個位置才能使 f a 變小。注意,你修改之後的數也必須是整數。2 n 106 ai 109 2 n 106 ai 109 簽到題gg,自己真的...