TG模擬賽題解 被吊打記

2021-10-09 22:53:14 字數 1905 閱讀 1948

太菜了,遊記也沒什麼好寫的,全程都在打暴力;接著暴力還打掛,毫無懸念地被吊打了……

就這個水平,別說noip 1=了,csp-s 1=都沒啦

後來講題聽懂了兩題,於是現在就開始寫題解……

首先,考慮乙個十分顯然的東西:如果乙個陣列能夠兩兩配對,使得每個數都在恰好乙個對里,且每對的兩個數相等;那麼顯然先手會輸。

原因顯然,先手能做的事情,後手也能做,他只需要控制上述條件的成立即可。即,假設原序列為112

21\ 1\ 2\ 2

1122

,先手通過操作第3

33個數把它變成了110

31\ 1\ 0\ 3

1103

,那麼後手就把3

33變成0

00,其他不變,此時仍然滿足要求。

因此,如果序列中的數有n

nn個數,且n

nn為奇數,那麼顯然先手會勝。即,先手先找到序列中最大的數,然後把它分出去,使得滿足要求;這樣後手就輸了,他就贏了。

如果n

nn為偶數且滿足上面的條件,先手必敗;否則先手必勝。因為,先手同樣也可以通過一次操作滿足要求。例如,序列為123

41\ 2\ 3\ 4

1234

,那麼先手就對第4

44個數進行操作,使整個序列變成133

11\ 3\ 3 \ 1

1331

。時間複雜度o(n

)o(n)

o(n)

。matrix tree定理表示不會,自閉了……

50分: 二進位制列舉+單調棧

我們列舉每一行是否被翻轉,狀態有2

n2^n

2n個。然後,我們列舉長方形的下邊界;然後掃一遍數所有的列,每次貪心地選擇該列是否被翻轉即可。

時間複雜度o(2

nnm)

o(2^n nm)

o(2nnm

)。100分: 縮點+單調棧

一道套路題,可惜比賽的時候沒有主要去想這題,而一直在嘗試優化t2t2

t2容斥套容斥的o(2

2n

)o(2^)

o(22n)

解法。我們類似縮點,對於每個田字格,如果田字格內有偶數個黑格仔,那麼對應的就是個1

11;否則對應的就是0

00。然後在對應的矩陣中面積最大的黑長方形就是答案,顯然後者可以通過列舉下邊界然後直接單調棧來更新答案。

為什麼這樣的解法是正確的呢?因為,即使一次操作涉及到乙個田字格,黑格仔數量的奇偶性仍然不變。而在乙個黑色的長方形中,任何乙個屬於該長方形的田字格內的黑格仔數量必須是4

44個,而它是乙個偶數。所以,我們可以這麼「縮點」並求出新矩陣中最大的長方形。

時間複雜度o(n

m)

o(nm)

o(nm)。

也並不是什麼恥辱,這就是我的實力吧……

重點是全場人均切t1,然而我到現在只做過3

33道博弈論的題目……就這麼點刷題量,你說我t1t1

t1能做得出來?

t 2t2

t2本來想寫o(2

2n

)o(2^)

o(22n)

的容斥套容斥的,後來覺得寫法太煩,就偷懶打暴力來節省時間……結果暴力還打掛了qaq

t 3t3

t3套路真的見少了,還是刷題量不夠的問題吧……

l uo

gu

luogu

luog

u刷了734

73473

4題了,估計到1000

1000

1000

題的時候,noi

p1

=noip 1=

noip1=

就穩了吧。

我真的好菜啊……

模擬賽 circle 題解

題意 有n個數,問有多少個x,x leq t 滿足這n個數分別 x後,異或和為s。每個數小於 2 m 數字dp。由於是加法,需要記錄進製,因此從低位到高位dp。只要記錄下有幾個進製,就可以根據這n的數的大小知道究竟是哪幾個進製了。設 dp i,j,0 1 表示考慮到第i位,有j個進製,與t的大小關係...

模擬賽2 題解

這次模擬賽最後一道是提答題,就不寫題解了。orz這題 emmm,我無話可說。小範圍記憶化,大範圍遞迴求解 複雜度 o k sqrt 記 f i,j 表示前 j 個數中不被 a i,a dots,a n 整除的個數,答案即為 f 1,n 狀態轉移方程為 f i,j f i 1,j f i 1,j a ...

2020 10 08 模擬賽 題解

期望100 實際100 老師說是結論題。其實可以直接打表,t i 表示0 63中有t i 對數與起來等於i,然後乘法原理即可。沒什麼難度。include include using namespace std const int maxn 100005 const int mod 1e9 7 cha...