2020 ICPC 小米邀請賽 部分題解


這是oi退役以來第五場比賽,也是和隊友打的第三場,前面零星有幾次個人賽。

水平不太夠,不過個人比較佛系,希望把能看出來的題目肝出來就行了,目標就是爭取不做演員;-P

A


A是我寫的

給n個數,取出最大的子集,使得子集中任意兩個數a,b滿足要么a|b,要么b|a

這題卡了很久,主要是一開始就想到了和n相關的做法和和值域相關的做法,但是兩個單獨都過不了

最后想起來這個是可以討論的,把兩種做法一結合就過了

考慮設f[x]表示x為最大數的最大集合大小,那么新加入的數字必須是x的整數倍,我們枚舉x的倍數就可以了,這里是1e7log1e7的

同理,設g[x]表示第x大的數字為最大數的最大集合大小,那么它一定由前n-1個狀態轉移來,所以就是n^2的

B


B是我寫的

給定一個二維平面,給k個線段,問從起點坐標走到終點坐標的最短路,行走時不能跨越線段

想象我們用彈力繩從起點拉,一直拉到終點,那么繩子會收縮,此時繩子的長度就是答案,而且繩子一定經過了若干線段的端點

所以把線段拆成兩個點,然后n^2連邊,跑最短路就可以了。因為INF開小了掛了,這是我的鍋,得背

C


sb題目,一整段長為n的w,答案就是2n-1,數數就好了

D


這個是隊友寫的

考慮一個點什么情況下刪掉會增加連通塊。不難發現當一個點是一個連通分量連出去的點時,我們刪掉他會新增連通塊。也就是說,這個點的所有兒子的low都不比他小。

E


留坑

F


做的時候看錯題了,我的鍋

不難發現答案可以二分。先排除全選ri都不能到L和全選li都過了R的兩種情況

假設我們二分到的答案是mid,那么每類題目我們至少需要mid*li個,並且剩余max(L,sum[li])-mid*li道題目需要去湊齊。這個直接看看sum[ri-li]夠不夠就行了

這題LL不夠,看了別人的題解用__int128才夠

G


留坑

H


留坑

I


水題,模擬就好了

J


我寫的

考慮從左上到右下找第一個不為零的位置,我們對這個點為左上角的矩陣不停-1,這樣能保證不會遺漏

然后我們check是否最后都變成了0,或者減成了負數

這是一個區間加,單點求的問題,我們差分然后二維樹狀數組就好了

K


留坑待填


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM