廣告
All Falls Down
非常感謝學弟學妹們捧場游記雖然這是一篇假游記
ZJOI Round1今天正式落下帷幕。在這過去的三天里遇到了很多朋友,見識了很多有趣的人和事。或許這只是我整個OI生涯中的卷首一場,但是允許我謹此游記獻給所有的一切、所有的你們。
ZJOIday1游記
8:30:然而報告廳里選手們陸陸續續地並沒有到齊……
第一場主講人是紹一的任軒笛,講課pdf的標題一如既往地是「雜題選講」聽主講人說都是一些套路題
Binary Cards
不上升序列
Sum of Powers
Perpetual Subtraction
題意
一開始有一個數x,每次把x變成[0, x]內隨機一個整數。
給出一開始數字為0 ∼ n的概率以及輪數m,求m輪后剩下數字
是i的概率。
對998244353取模。
范圍
n ≤ 10^5
, m ≤ 10^18。
看上去似乎可做的概率題(但是我不會小數取模)
小L的計算題
(又是數學題)
星空
Chef attic window
(數學題)
Query on a tree VII
題意
給出一棵n個點的無根樹,每個點有點權。
點的顏色有黑白兩種,初始所有點都為黑色。
需要支持:單點反色,單點修改點權,詢問一個點所在的同色連
通塊中的最大點權。
范圍
n, m ≤ 10^5。
據說是一道數據結構題
Jabby's shadows
題意
一棵樹,樹有邊權,每個點有黑白兩種顏色,要求支持:
1 u:詢問點u所在同色連通塊中,最遠兩點的距離,即直徑。
2 u, v, c:將u ∼ v鏈上顏色都修改為c。
范圍
n, q ≤ 100000。
上一題的加強版。
但是聽課之后仍然不懂如何修改一條鏈的顏色……
Making Change
題意
有n種硬幣,第i種面值是Di,每種都有無限個。求拼出C的方案
數。兩種方案不同僅當某種硬幣使用的數量不一樣。
范圍
n ≤ 50, Di ≤ 500, C ≤ 10^100
第一眼看上去好眼熟,以為終於來了一道可做題……好吧數據范圍有些可怕
正解依然是數學方法。我能說基本聽不懂嗎……
不過發現了一個很有趣的東西:洛必達法則。找了一個例子推了推——好生神奇!以前也有遇到過求∞/∞這樣式子的極限,不過都是瞎推來推去然而並沒有推出來。
13:03:三樓機房的初中生都去打游戲了;遲到三分鍾進場
下午第一場講課人是陳嘉樂。好像又是雜題選講的樣子
Test 1
Test 2
一個網格圖n,m<1e5被染為黑白兩色。對於所有的黑點(x,y),(y,z),將(x,z)染為黑色。詢問最后一共有幾個黑點。
是的看上去非常可做。然而我只會用vector暴力枚舉。
標算講了弱連通塊及染色如此的圖論方法。但是,???
Test 3
一顆有根樹有黑白兩色;初始位置在root上,每次隨機等概率走向一個兒子,當位於葉子節點時停止。對於每次走到的節點,如果當前是白點則僅在第一次走上該點時cnt++否則每次cnt++。詢問最終cnt的期望值。
據說是一道概率的入門題。看上去dp可以?不過標算我沒有仔細聽,似乎要解方程?
Test 4
給定一個字符串S,字符集大小小於等於8。當且僅當Si=Sj或|i-j|=1時存在i->j的有向邊。詢問最后圖的直徑 和 距離為直徑的所有點對。
Test 5
給定一個n≤15個點,m≤n(n-1)/2條邊的無重邊的有向圖G,保證任意一條邊(xi,yi)中xi<yi。考慮G中的所有子集K,並在G中刪去這些邊,形成新的圖G'。
小H,小R在G'上玩游戲,小H先手,兩人輪流操作一次。起初在點1,點2有兩顆石子。每次操作可以將一個石子移動到一個與它相連的點上,最后無法移動者失敗。
我的想法:枚2^m的圖,每次計算1,2的SG值。 顯然是會TLE的
標算:狀壓DP:dp出有哪些圖1、2點的SG不同。將圖分層操作,狀壓儲存。並沒有搞清楚實現細節
Test 6
對於一個初始值為0的序列{an},共染k次顏色,每次可以在[l,r]上覆蓋上第i種顏色。詢問最終可能序列的方案數。
法一:基礎的dp
法二:數學方法求解輔助多項式F(x)
Test 7
定義一個森林的價值為森林中每棵樹的點數的平方和。現在給定一顆n≤1e5的樹,求隨機刪去i=1...n條邊后的森林的價值的期望。
「簡單」的計數/數據結構題。
然而我依然不會
15:07:下午第二場開講,吳瑾昭的網格圖算法選講
聽主講人說這是今年冬令營的某營員交流課件
完全連通
bzoj1001
求網格圖最大流/最小割
ZJOI2016旅行者
正權網格圖多次詢問最短路
網格圖的SSSP
首先這個網格圖是有可能有負邊但是一定沒有負環的,那么因為:
- dijkstra無法跑負權圖
- SPFA在網格圖上跑多半是會爆炸的
所以要考慮新的SSSP
這個網格圖的SSSP是個分治操作。
令sp(G, s)為求圖G中點s到其他各點的距離
- 若G的節點數小於等於2,則返回
- 沿着G的長邊的中線把G分為G0,G1
- 取中線上一點r
- Di = sp(Gi, r)
- 算出Gi中任意兩個中線上的點的距離δi[u][v]
- 對每個中線上的點v算出B[v] = dist(r, v)
- 對每個點v算出d'[v] = dist(r, v)
- 對每個點v算出d[v] = dist(s, v)
- d即為所求
然后還講了step6,7,8的具體實現細節。但是台下有人在聽嗎???
Decremental 2-Edge-Connectivity
網格圖之橋
今天講課用到好多高級的數據結構、玄學的數學方法和那個神奇的FFT……
嗯……還有非常非常多東西要學。有些懷疑一年之后能否達到這樣的水平……
ZJOI day2 游記
8:31:紹一季雨田開始講課
然而課件名稱叫做“CF水題選講”
CF578E Walking!
CF788D Recover a functional graph
題目大意
交互題:平面上有一些平行於x軸和平行於y軸的直線。每次詢問可以詢問平面上的一個點,交互庫會給出與這個點距離最近的直線的距離。你需要確定所有的直線。
數據范圍
平行於x軸或y軸的直線條數個不超過1e4,坐標范圍絕對值不超過1e8.詢問次數不能超過3e5
看上去可做的交互題……但是如果有很多平行於y軸的直線豈不是很難判斷
標算
詢問形如(x,x)的點,當得到的答案為0時,則詢問點(x,t)和(t,x)和(t,x)確定答案是否為0,其中保證(t,t)答案不為0。
因此倍增做下去就可以了。
然而這題是會被卡常數的。分析一下發現在初始幾步浪費比較大,所以可以在(x0, x0)的答案為0時判斷(x0+1e3,x0+1e3)的答案是否為1e+3,是則直接跳到(x0+1e3,x0+1e3).
CF713E Sonya Partymaker
題目大意
有n個人,m個凳子,其中凳子是環形排布的。
CF744D Hongcow Draws a Circle
題目大意
平面上有n個紅點,m個藍點。需要畫一個最大的圓,滿足圓內至少有一個紅點,且沒有藍點。邊界上的點可以視為在圓內,也可以不在。輸出最大的圓的半徑。無限大則輸出-1。
mine
我的想法是給藍點求個凸包先?
標算
- 如果有紅點不在藍點形成的凸包內,顯然輸出-1
- 如果答案有限,
CF618G Combining Slimes
題目大意
有一個1xm的面板,兩個值為x的數字塊碰到一起會形成一個x+1的數字塊。一開始面板上沒有數字塊。接下去會一直執行以下操作,直到無法操作:在面板最右端會生成一個數字塊,有p的概率這個數字塊的值是1,有1-p的概率這個數字塊的值為2.詢問最終面板上數字和的期望值。
數據范圍
1 ≤ n ≤ 10^9, 1 ≤ p < 10^9
標算
……dp做法
技巧
輸出實數題一般兩種套路
- 二分
- 爆精度
CF794G Replace All
CF744E Hongcow Masters the Cyclic Shift
標算
建模為圖論
CF704E Iron Man
題目大意
有一顆n個節點的樹,有m個人,每個人有四個參數(t,c,v,u)表示這個人t時刻在點v出現,並以每秒c條邊的速度向點u移動,在到達u點后消失。詢問最早的相遇時刻。若u=v則表示這個人僅在t時刻出現。
數據范圍
n,m≤1e5,t,c≤1e4
標算
首先考慮退化成鏈的做法。那么每個人都可以表示成為在t-x坐標系上的一條線段。
那么再用樹剖dfs序代替x軸,再用set玄學維護就可以了(?)
CF645G Armistice Area Apportionment
題目大意
給定兩點P(a,0),Q(-a,0),現在在平面上有n個點,
標算
以n個點為圓心作n個過P的圓。求所有圓交點中與點Q最近的交點,輸出該交點到點Q的距離。接下去二分答案,轉化為求圓上弧是否相交的問題。
(然而最后一步仍然不會)
CF750H New Year and Snowy Grid
題目大意
有一張有障礙的(永久障礙)\(h×w\)的網格圖,問是否存在一條路徑,從左上角出發到右下角再回到左上角,其間不重復經過同一個點(除起點外)。有\(q\)組詢問,每組詢問給出\(k\)個非障礙點,問是否存在不經過這\(k\)個點的合法路徑。
數據范圍
h,w≤1e3,q≤1e4,k≤10
標算
首先如果只有一組詢問,那么這就是一個經典的網絡流。我們可以將每個點拆點,如果這個點是障礙點,那么i向i'連流量為0的邊,否則i向i'連流量為1的邊,表示每個點只能經過一次。然后每個點向周圍的四個點連流量為1的邊,然后從S到T跑最大流。如果流量小於2,那么答案就是NO,否則答案就是YES.
然后試圖最大流轉最小割。不過因為建的不是平面圖,沒有方法直接最短路。
……接下去圖論算法,試圖構造 最短路模型。
……接下去轉為連通性問題。
CF772E Verifying Kingdom
題目大意
交互題:交互庫有一顆二叉樹,其中有n個葉子節點,所有節點除葉子節點外都有兩個兒子。每次可以詢問(a,b,c)三個不同的葉子節點,交互庫會回答lca(a,b),lca(b,c),lca(a,c)中深度最深的一個。輸出與交互庫同構的任意一棵樹。
數據范圍
n≤1e3,詢問不能超過10n
標算
考慮挨個將點加入樹中,問題轉換為如何快速判斷一個點在樹中的位置。
然后點分治。
中午休場時分:播放《帕丁頓的熊》
下午12:59:下午第一場主講人鎮海梁晏成
課件名稱:JOIsc(Japanese OI Spring Camp)好題選講
Port Facility
Sparklers
題目描述
M個人分別在Ai的位置上站立,同時每個人都有煙花且他們每秒可以跑s米。初始只有第k個人的煙花正在燃燒,並且煙花只能夠燃燒T秒;現在要將煙花傳遞下去。煙花能夠從A傳遞到B當且僅當:
- A和B的位置相同
- A的煙花恰好燃燒到T秒
- B的煙花尚未燃燒
mine
那么二分答案是顯然的,問題是如何check()。
Cultivationhh
題目描述
有一個W×H的格子,其中有n個格子長草。接下去可以選擇上下左右四種操作。“上”操作代表所有長有草的上邊一個格子長上草。
標算
先考慮一維的情況,那么只有左右的操作。
例如X---X-需要3次,而---X---X-需要4次。
設左操作有L次,右操作有R次;左邊起有A個空,右邊起有B個空,兩塊草之間有最大C個空。那么必須滿足:
- L≥A
- R≥B
- L+R≥C
然后在二維中考慮上下操作的次數。繼而dp處理,最終得到答案。
Broken Device
題目描述
通信題:你需要傳遞一個數X。
你可以發送一份長度為150位的01串。由於發送裝置是損壞的,在這150位中,有指定的K位是損壞的,這些位置上只能發送0.你加密時知道這些信息。
同時需要根據你發送的01串還原出X。注意,你解碼時只知道發送裝置是損壞的,而不知道K的值,也不知道哪些位置只能發送0
數據范圍
X≤1e18,K≤40.
mine
標算
random_shuffle? / 某種神奇的壓縮方式?三位分一個段。
Railway Trip
Arranging Tickets
題目描述
有N個車站順時針圍成一圈,編號為1...N。有N種車票,其中第i種車票可以從第i個車站前往第i+1個車站;也可以從第i+1個車站前往第i種車站。
只能以套票的形式購買車票,一組套票包含每一種車票恰好一張。
現在有M類人,第i類人共有Ci個,他們都要從Ai前往Bi個車站,詢問要滿足所有人至少需要多少組套票。
標算
(有些抽象……加上我想睡覺了……自從沒有聽懂講課的“翻轉”操作之后就再也沒聽懂了……)
Long Mansion
標算
似乎是DP?
Natural Park
題目描述
交互題:有一個N個點,M條邊的無向圖,每個點的度數≤7.每次你可以詢問(x, y, p[]),交互庫會返回只經過p[]中的點能否從x走到y
最多詢問45000次,求這張圖
數據范圍
N,M≤1500
標算
先考慮樹退化為鏈的過程;然后再……
Long Distance Coach
題目大意
有一輛客車從0前往W,車速為每秒一個單位長度。途中有N個補給站位於S1,...,Sn。在起點或補給站可以給客車的飲水機加水,其中飲水機容量不限且每一單位的水價格均為W。
起初車上有M個乘客,第i個乘客會在時刻Di+T×k喝一單位的水;如果此時飲水機沒有水了,這位乘客就會下車並且索要Ci的賠償費。不會有人在補給站的時候需要喝水。
司機會在所有T×k的時候喝一單位的水,此時飲水機內必須要有水
詢問如何分配在起點和補給站加水的量,使得總花費最小。
mine
顯然的,既然飲水機容量不限且水的單價相同,那么可分為兩種情況:
- 讓所有人都有水喝:在起點就買下所需的水。
- 把那些要求賠償費的乘客趕下去:起點所買的水小於所需的
但是如何繼續貪心呢?……
標算
同上分為兩類,然后dp做法。
轉移方程顯而易見之后考慮復雜度。然后據大佬所說,可以斜率優化+單調棧優化dp;或者cdp分治維護一下;或者一種用gcd的方法優化(?)
Abduction 2
題目描述
有𝑊+𝐻個街道,其中𝑊條平行𝑦軸,𝐻條平行𝑥軸,它們相交形成𝑊×𝐻個十字路口。每條街道有一個重要度,重要度兩兩不相同。給定一個起點,開始時你可以選擇任意一個方向並順着街道走下去,如果在十字路口拐彎可以走到重要度更大的街道就拐彎,方向隨意。如果走到盡頭那么就停止行走。𝑄次詢問一個起點,求走到盡頭的最長路的長度
數據范圍
W,H≤500000,Q≤100
標算
先考慮一次詢問直接搜索,然后仔細分析一下可以加上一些剪枝條件。
后來梁晏成成功證明了記憶化之后復雜度不僅小於O(NQ)並且還只是O(N√Q)的(因為記憶化之后常數比較大)
Dragon 2
有𝑁條龍,第i條龍坐標為(𝐴_𝑖,𝐵_𝑖),屬於第𝐶_𝑖個部落。有兩個人類的村庄(𝐷1,𝐸1 ),(𝐷2,𝐸2)。接下來有𝑄次詢問,每次詢問給出𝐹,𝐺,表示所有屬於𝐹的龍向屬於𝐺的龍作射線,問與線段(𝐷1,𝐸1 )−(𝐷2,𝐸2)的交點個數。不存在三點共線。
標算
理解為向量的二維偏序判斷問題。然后再分塊技巧,離線預處理玄學可過(據說每次暴力也直接可過)
City
題目描述
通信題
The End
省選一試結束啦(不過我反正就是去打醬油的節奏)
話說題目的部分分給的還是很良心的。然而我並沒有拿到
A題暴力處理線樹,看上去開O2跑得還挺快。
B題看上去就是數據結構大題,果斷放棄連暴力都沒寫。
C題猜結論,每次操作應該是O(1)或者O(log n)的?瞎猜瞎猜搗鼓出了跟gcd有關的東西。但是貌似我的結論在M≤1e3的時候跑的基本正確然而M≥1e5時候就要靠rp了???
誒誒誒,好像在兩個學校同時報省選那么會有兩張准考證
所以這就是我最終考試編號和狗牌編號不一樣的理由嗎……