IOI2021 國家集訓隊作業部分題解

2021-10-14 16:42:06 字數 2242 閱讀 4762

讀者本地應該都有由各個集訓隊員撰寫的題解。本文旨在對其進行一些補充。

**基本都能在cf gym的提交中找到,使用者名稱zx2003(應該沒人不知道吧。。。)wf2017-2019需要在loj上找,因為當時覺得loj交起來比較舒適。

b本題複雜度是可以優於yht給出 o(w

2log⁡d

)o(w^2\log d)

o(w2

logd

) 的,雖然也沒什麼意思。

對於每種離散物品,將揹包容量按模 w

iw_i

wi​ 的值分類後,每一類都是可以決策單調性優化轉移的,寫個分治就沒了,對zx還寫了這個,每一類都是個經典的斜率優化問題,維護個凸包就不必帶log了。

e這裡提供乙個嚴格正確的做法。

我們維護每個點的顏色表示其所屬的等價類集合,然後迭代若干輪並不斷更新每個點的顏色。

每輪迭代中,按照題意可以把每個點的新顏色表示為vector>,然後用個map對映回int

如果一輪迭代後顏色數不變,則無需繼續迭代。由於顏色數至多從n降為1,所以迭代只會進行至多n輪,這也證明了dxm題解中的結論。

我的實現方式複雜度高達o(n^5) ,但是莫名ac了。實際上稍微犧牲點正確性用點雜湊能降不少複雜度。

g這裡提供乙個優於 o(n

3)

o(n^3)

o(n3

) 的做法。

通過一些分析,可以變為有o(n)個決策點,每個決策點要往左二分查詢最左的可行位置,判斷需要2-sat。暴力需要判定nlogn次,但是如果按隨機順序計算決策點,二分前先檢查一下是否可能更新答案,就只用判定o(n)次。2-sat可以kosaraju+bitset優化,這樣就得到了優秀的 o(n

3w

)o(\frac)

o(wn3​

) 做法。

zjc給的做法是floyd,需要動態維護最短路,不確定是否能過通過壓位或者四毛子做到優於n^3。

h題本身沒什麼意思。主要是介紹一下乙個通用性更強的網格圖上高消實現方式。

網格圖對應的矩陣m,性質可以弱化為若 mi,

jm_

mi,j

​ 非0,則 ∣i−

j∣

|i-j|

∣i−j

∣ 小於乙個定值l。

然後我們改造一下矩陣儲存方式,每行只存一段非0的長為 o(l

)o(l)

o(l)

的區間,過載個陣列類即可做到這一點。然後跟普通高消一樣寫,稍微注意下迴圈上下界就行了。

l這裡提一下我一開始寫的時候漏掉的細節。

對於平面圖的乙個連通分量,它的外部不一定與無窮遠處相連通,也可能是被另乙個連通分量的某個麵給包裹著。聽起來很顯然但是小蒟蒻zx一開始就是沒考慮到調了一年。

g首先要觀察出決策樹的結構。之後題解做法是(相對於我的做法)倒著弄,正著弄比較麻煩,我的辦法是直接維護決策樹上剩餘節點構成的二叉樹森林,每次貪心修改,複雜度應該比題解多log。具體細節忘了,感興趣的話可以看我**。

f寫煩了導致乙個1k題調了4h,唯一聊以**的地方是所有for迴圈都可以顯式地o(1)計算,閒的蛋疼的對o(1)算答案感興趣的人可以去看一下,討論情況可能有點多。

h四維空間裡的乙個超立方體有16個頂點,每個頂點座標取值都是0/1。乙個立方塊的八個頂點座標滿足,四維座標中有一維均為定值。而兩個立方塊的交是乙個平面,滿足四維座標中有兩維均為定值。

任意欽定乙個立方塊八個頂點的座標後可以遞推出其它立方塊的頂點座標,順便也完成了判定過程。

不過挺好奇的是這種題出題人怎麼造資料的。

c這裡給出乙個嚴格正確的做法(無雜湊)。

首先將重心提根。我們嘗試給圓方樹上每個點的子樹賦乙個字元用以描述同構關係。對於乙個圓點,將其所有兒子的字元sort後可以看作乙個字串;對於乙個方點,將其所有兒子的字元按序拼接得到串s後,取min(s,rev(s))也可以得到乙個字串。對於乙個字串,我們可以將其看作乙個新的字元,並將得到的新字元賦給該點。維護所有字串的集合需要個trie。

注意在根上需要處理迴圈同構,要跑個kmp。

g首先可以將問題轉為查詢若干個矩形,要求返回結果形如

struct info;
其中been分別表示該矩形對應區間開頭和結尾的極長0段,v表示極長1段的長度及對應數量。

顯然info是可合併的,直接按定義遞迴即可,剪枝加滿就a了。要加的剪枝還是挺多的,詳見**吧。

IOI2021集訓隊作業

150題中完成135題 對於我這種又菜又要學文化課的選手怎麼可能辦得到啊 不過能做一點是一點吧 畢竟有那麼好的機會不能浪費啊 upd 由於偷懶只在更新了。本次泛做試題來自於 21 場 icpc 競賽,所有競賽均在 codeforces 的 gym 中可以找到 下面列表 中結尾的數字代表其在 gym ...

IOI2021集訓隊作業125AA Baggage

有一排的格仔,編號為 2n 1 到 2n 一開始在 1 到 2n 處交替放著 ba 進行操作,每次選擇相鄰兩個不為空的位置,將位置上的東西移到相鄰兩個為空的位置上。求最少操作次數使得最終形成 aa dots ab dots bb 連續 n le 100 首先猜想上界為 n 手玩了一下 3,4,5 感...

2023年國家集訓隊作業

完成題數 總題數 5 道 37道 1.a1504.book 王迪 數論 貪心 2013中國國家集訓隊第二次作業 2.a1505.樹 張聞濤 倍增lca 可持久化線段樹 dfs序 2013中國國家集訓隊第二次作業 3.a1517.動態樹 樹鏈剖分 線段樹 子樹操作 中國國家隊清華集訓 2013 201...