目錄:
0. 前言
SCOI2015,真是跪出翔了。
這篇博客只討論SCOI2015題目的簡單做法,吐槽另有地方。
1. Day1
P1. 小凸的矩陣
大意:
給你一個N * M的矩陣(N <= M),在其中選N個數,每行每列至多選一個。問第K大的數最小能是多少。
解析:
二分答案,看一看匹配數夠不夠(N - K + 1),夠就下移答案,不夠就上移。
考場上的做法:
同標解。
結果:
100pt
Remark:
就TM這麼水?
P2. 國旗計劃
大意:
一個長度爲M的環上有N段區間。保證這N段區間合起來能覆蓋整個環。求:對於每個區間,選擇它以後至少還要選擇多少其它區間才能覆蓋整個環。保證區間不互相包含。
解析:
開環,則問題類似線段覆蓋。那麼對於每一個區間,選擇它以後下一個選擇哪一個是完全確定的。我們進行倍增判斷至少選多少個就能走完一圈即可。
考場上的做法:
開環,則問題類似線段覆蓋。那麼對於每一個區間,選擇它以後下一個選擇哪一個是完全確定的。我們把這個順序關係建成一棵樹,在樹上進行黑算法。
結果:
0pt
Remark:
就TM這麼水我還是沒分?
P3. 小凸愛跑步
大意:
一個凸的N邊形,逆時針記每個頂點爲P[0], P[1],……。在這個多邊形內取一點P,連接P與多邊形所有頂點,構成N個三角形。如果這N個三角形中ΔPP[0]P[1]的面積最小,則這個P點是可行的。求在這個多邊形內任取一點,取到可行點的概率。
解析:
根據集合概型,我們應該算可行區域的面積。考慮一條邊P[M]P[N + 1],S(ΔPP[0]P[1]) < S(ΔPP[M]P[N + 1])對應一個半平面。求這些半平面的交即爲可行區域。
考場上的做法:
接近標解,但是求線段交點的函數忘記了。隨便手推了一個。被卡精度了。
結果:
40pt
Remark:
幾何的模板一定要背牢。
2. Day2
P1. 密室逃脫
大意:
一棵完全二叉樹,有邊權與點權。每個節點上有一盞燈,需要按照DFS序點亮所有節點上的燈。點亮某個節點上的燈的花費爲這個節點的點權乘以這個節點到上一個被點亮的節點的路徑長度。點亮根節點沒有花費。求最小花費。
解析:
設dp[i][j]代表子樹i全部點亮,最後一個點亮的是j的最小代價。看起來是O(n ^ 2)的,但是由於是完全二叉樹,每個點的祖先是O(log n)的,所以狀態是O(n log n)的。
考場上的做法:
真正的O(n ^ 2)暴力,而且不知道哪裏寫掛了。
結果:
0pt
Remark:
就TM這麼水我還是沒分?
P2. 密碼盤
大意:
(爲了描述流暢有一點不影響題意的小改動)
一個環形密碼盤上有N個數字,N個運算符(‘+’或者‘*’)。維護兩種操作:
- 修改某個位置上的數字和它左邊的運算符。
- 以某個數字爲起點,構造一個長度爲N的數列B:B[0]爲起點上的數;對於起點之右的(N - 1)個運算符,把與它們相鄰的兩個數看成操作數,計算答案的個位數,依次爲B[1]到B[N - 1]。查詢B數列中距離B[0]最遠的一段連續的0的起始位置。B數列中沒有0輸出-1。
解析:
暴力維護每個運算符的運算結果,把0的位置用set維護一下。查詢的時候特判一下起始點即可。
考場上的做法:
暴力維護每個運算符的運算結果,暴力查詢。
結果:
0pt
Remark:
爲什麼0pt參見我用來吐槽SCOI2015的博客。
P3. 情報傳遞
大意:
情報員的聯繫網絡構成一棵樹,每個節點爲一個情報員,父節點爲上線。樹根即爲大Boss。每個情報員有一個危險值,初始危險值全部爲0。
一共有Q天,每天會發生下列兩件事之一:
- 某個情報員開始活動。這一天他的危險值仍爲0,但是此後每天他的危險值會加一。如果他已經是活動的,什麼事都不會發生。
- 要把一份情報經過這顆樹的一條路徑從X號情報員傳到Y號情報員,同時給出一個風險控制值C,路徑上每一名危險值大於C的情報員會對這份情報構成威脅。求這次傳遞要經過多少情報員,其中多少對這份情報有威脅。每份情報的風險控制值可能不同。
解析:
顯然“某情報員對第D天傳遞的,風險控制值爲C的情報有風險”等價於“該情報員在第(D - C)天前已經開始活動”。記錄每個情報員最早開始活動的時間,則問題變換爲:求一條路徑上權值小於某定值的點的個數。
樹鏈剖分 + 主席樹維護即可。
其實最後發現哪需要樹鏈剖分呢,直接主席樹就過了,白加一個log。
考場上的做法:
同標解。寫了兩個暴力用來對拍。
結果:
100pt
Remark:
- 夠噁心,夠噁心,夠噁心;
- 有點像碼農題喲,可惜只有4K+;
- 要對拍,不要浪。
總結
尼瑪死,手殘丟分真是嚇人。如果一次都不手殘的話就能進A隊了吧。可惜還是手殘了。