1. 程式人生 > 其它 >20211014省選組總結

20211014省選組總結

因為不想打細節題所以滾來寫總結了

這套題面過度玩梗。。。

T1 Hello my friend

題意:樹上每個點有黑白兩種顏色,如果是黑色則每次走到都有貢獻,白色則只有一次貢獻,問從點 \(1\) 開始的期望。

(定位是簽到題,然而爆零。。。)部分分的提示非常明顯

考慮將黑白兩種顏色分開做,黑色是經典題目(指不知道叫什麼),每個點 \(f_u\) 的表示式都可以寫作 \(f_u = k_u f_{fa} + b_u\) 的形式,用這個形式一直轉移到 \(1\) 即可, \(b_1\) 即是答案,若是白色點則不計算貢獻,將表示式中的 \(+1\) 去掉。

白色的話就是求每個點被到達的概率,維護 \(f_x\)

\(g_x\) 分別表示 \(x\) 走到 \(fa_x\)\(fa_x\) 走到 \(x\) 的概率, \(DP_x\) 表示到達 \(x\) 點的概率,像換根DP一樣求即可。

注意有兩個資料是不符合題目所給 \(d_1>1\) 的條件的( \(d_x\) 為點 \(x\) 的度數)。

T2 Try to find out the wrong in the test

題意:將一個序列分成一些連續的區間,每個點有一個 \(L_i\)\(R_i\) 表示該點所在區間的大小上、下限,要求分出的區間最多,並求出方案數。

首先 \(n^2\) DP是顯然的嘛,然後考慮優化。

這個整個是不具有單調性的。。。不要卡死在一個點上了。。。

但是滿足 \(R\) 條件的區間是具有單調性的,因此可以對於每個點維護出 \(Left_i\) 表示能轉移到該點的最左點,可以用單調佇列實現。

然後考慮分治,每次將 \(L\) 最大的點作為分治中心,設該點為 \(L_k=c\),用左邊更新右邊。

此時我們就知道了每個區間的最小長度,

根據 \(Left_i\)\(i\) 分成 \(Left_i \le l\)\(l < Left_i < k\)\(k \le Left_i\) 三段,

最後一段沒有貢獻,中間的貢獻區間不確定,暴力轉移,

前面的一段我們發現有 \(i \le k+1-c\)\(i > k+1-c\)

之分,前者相鄰兩個 \(i\) 之間的貢獻區間只差 \(i-c+1\) 這一個,對於第一個用線段樹求解後可直接更新;後者每一個的貢獻區間都是一樣的,將答案標記打到整個滿足條件的區間上即可。

T3 【JSOI2015】投影面積(light)

題意:平面上有一個螢幕和一個光源,還有若干個反射或阻擋的障礙物,求螢幕被照亮區域的佔比。

將光線分離成幾十萬條後暴力判斷是否可以到達螢幕。

暴力細節題。。。噁心壞了