今天比賽做得超級(不)爽。。。
估分:\(10 + 0 + 30 + 0 = 40\)
實際:\(0 + 0 + 30 + 0 = 30\)
我暈了,暴力也打錯了。。。。。。
隔了一天才回來打\(t1\)(\(2020.8.6\)),發現自己已經習慣(愛上)了三進製轉移。
我們對於乙個格仔有三個狀態,黑色,白色,和任意色。轉移的時候是乙個個格仔轉移(輪廓線\(dp\))。
轉移要保證該格仔上面乙個格仔最後要是白色或任意色。
操作有三種:不操作,改變自己的顏色(黑白互換),改變周圍的顏色(並且自己顏色變成任意色)。
然後有一點要注意的是:我們發現,改變周圍顏色的時候下面的也會改變,但有一點可以解決:
我們發現之後上面的顏色是任意色的時候才會改變這個格仔的顏色,所以轉移時判斷一下即可。
這道題。。。竟然是網路流。。。
我們需要解決炮台相交的問題,可以發現相交實際上出現了一條路徑。
規定炮台路徑都是由縱向走向橫向。對於每條邊的邊權即為該炮台打到的\(max\)減去當前格仔的\(val\)。
但注意到可以會出現有路徑橫縱變換多次的情況,於是將每個點拆成兩個點,乙個點走橫向,乙個點走縱向,然後將走縱向的點向橫點連一條\(inf\)的邊即可。
現在的問題轉化成了一道最小割模型,跑最大流即可。
改完\(t4\)改\(t3\)。(* ̄︶ ̄)
這道題很明顯可以看出是一道點分治,但我不會快速求經過當前重心的路徑答案。
然而這個操作確實很麻煩。
我們假設當前節點\(x\)的父親是\(fa\),然後我們可以發現:
\[f[x]=f[fa]+size_-hb[c[x]]
\]其中\(f[x]\)表示這一次的\(x\)的答案,size_表示根節點走這條路徑這個兒子以前的子樹大小,而\(hb[c[x]]\)表示以前子樹中包含\(c[x]\)顏色的路徑數。
這樣我們正著來一遍,然後倒著來一遍,最後減去重複計算每個點到重心的答案即可。
表示打起來超級不方便。。。
正解線性基。而且操作極騷,有點難想。
首先很容易將題目轉化,成每次修改兩個點的權值,求\(n\)個數的子集異或最大值。
\(fk\)大佬說:「如果是兩個數可以用\(trie\)亂搞,而多個數則可以用線性基」
但是這個線性基是要支援修改的。而有個結論。
就是對於加入線性基的數,刪除時間越晚的越優。
這樣我們就可以對於每個線性基的數存乙個刪除時間點。
對於刪除時間更晚的,我們可以將插入的值與線性基的值交換,然後繼續做下去。
可以證明這樣不會影響線性基的正確性。
刪除我們如果找到刪除時間相同的就將這位的值刪去,否則不需要修改。
查詢最大值直接貪心掃一遍即可。
以後一定要把每一次比賽當做正式比賽來做,我做到後面竟然沒有打暴力的心思了。。。危!危!危!
最好每道題都均衡分配時間,不要死在一道題上了。
加油加油,中考成績出了,再接再厲!
2020 07 16 省選B組 模擬
t1 這題是一道水題,但是我沒有想出來。首先發現如果乙個矩陣的 1,1 為1的話,那麼先手可以先把 1,1 翻轉,然後每次後手翻轉另乙個位置的時候,先手就可以翻轉 1,1 這樣下來先手在這個矩陣是必勝的。反之,如果乙個矩陣的 1,1 是0,那麼先手是必敗的。這樣我們就可以知道乙個矩陣的勝負狀態。然後...
2020 07 27 省選B組 模擬
t1 設f u 表示從u走到根的最小花費。考慮從上往下轉移,當我們要求乙個u的f值時,一定是列舉一種過路劵i,然後從與u的距離小於等於k i 的u的祖先中取min轉移。而取min的過程可以用倍增優化。t2 對於左游標左側和右游標右側的字元我們可以用兩個棧維護,而中間部分則用乙個佇列維護。在翻轉時就對...
2020 08 12 省選B組 模擬 總結
估分 100 30 30 30 190 考場 100 30 20 0 150 看來我的暴力水平還是不咋地。看完題,點分治就直接上了。發現每一位互不影響,所以在看經過 rt 的路徑時儲存一下有該位的個數,然後乘加到答案即可。由於同乙個子樹會算多,所以在子樹減去即可。正解樹形 dp 對於每一位直接 dp...