前言
先鴿一下qwq
2024.3.31
-
P1087 [NOIP2004 普及組] FBI 樹
回來後的第一道題,簡單回憶了一下樹的遍歷和遞迴。還好還是記得一點的,想再看看樹的遍歷,暫且鴿一下 P1229 。 -
P1309 [NOIP2011 普及組] 瑞士輪
兩年前的一直沒改/cf 思路還是記得的
複習一下歸併排序,寫20min+調20min /ohh
輸出除錯……
賦值a=b+1怎麼寫的a=b++。。。/cf/cf
2024.4.4
清明放假 whk寫不動了來看看這邊qwq
-
P2239 [NOIP2014 普及組] 螺旋矩陣
哇柿子題(好像是吧?)找規律先從特殊的最外層開始找,發現 \(i=1\) 時為 \(j\) , \(i=n\) 時為 \(3n-1-j\) ;\(j=1\) 時為 \(4n-2-j\),\(j=n\) 時為 \(n+j-1\) 。
把整個矩陣拆成一圈一圈的,每一圈都可以用以上的結論算出來。
然後就可以遞迴辣,每次加上每圈幾個數即 \(4n-4\) 。
2024.4.6
好耶作業寫完了
-
Vladik and fractions
這種叫構造題/yiw 題意:求 \(\frac {1}{x} + \frac {1}{y} + \frac {1}{z} = \frac {2}{n}\)的正整數解
觀察一下,先令其中一個等於 \(n\) ,然後轉化為求 \(\frac {1}{x}+\frac {1}{y}=\frac {1}{n}\).
思考ing
想起一個小學常用式子(霧) \(\frac {1}{n*(n+1)}=\frac {1}{n}-\frac {1}{n+1}\) 整理可得 \(\frac {1}{n+1}+\frac {1}{n*(n+1)}=\frac {1}{n}\) 所以對應三個解都求出來啦
\(n=1\)時代入發現 \(n+1=n*(n+1)\)重複了,所以此時無解。 -
P3478 [POI2008] STA-Station
學習一下換根dp,顧名思義理解為改變根節點dp(?)
不妨令 \(u\) 為當前結點,\(v\) 為當前結點的子結點。考慮狀態轉移,這裡就是體現“換根”的地方了。令 \(f_u\) 為以 \(u\) 為根時,所有結點的深度之和。
觀察發現,所有在 \(v\) 的子樹上的結點深度都減少了一,總深度和就減少了 \(son_v\) ;所有不在 \(v\) 的子樹上的結點深度都增加了一,總深度和就增加了 \(n-s_v\);可得 \(f_v=f_u-son_v+n-son_v\) ;
為啥 \(son\) 也要開 \(long long\)啊??? 誒怎麼不開也過了。?
2024.4.7
在家呆一天
-
Tree with Maximum Cost & [ABC348E] Minimize Sum of Distances
兩道一樣的,一個求最大一個求最小。根據上面換根後的深度變化規律,這次我們新開一個 \(cnt_u\) 表示以 \(u\) 根節點的子樹的權值和。然後易得轉移方程 \(f_v=f_u-cnt_v+CNT-cnt_v\);
。。。以後直接#define int long long
還有,無窮大到底要開多少啊/kel/kel -
Maximum White Subtree
首先我們令 \(f_u\) 為以 \(u\) 為根節點的子樹的答案,那麼可得\(f_u=\sum\limits_{v\in son_u}max(f_v,0)\) ;
然後考慮合併,令 \(ans_v\) 為答案,那麼分為子樹和子樹外兩塊。
子樹內: \(ans_v+=f_v\)
子樹外: \(ans_v+=max(0,ans_u-max(0,f_v))\) ; 考慮算 \(f_u\) 的時候有沒有包含 \(f_v\),根據前面柿子發現,如果 \(f_v\) 大於\(0\)就包含了。
2024.4.13
又是一週
-
D - Divide Interval
來補一道賽時沒做的。感覺上可以貪心,每次找最大的。
but不會寫怎麼辦。。。康康討論區發現可以用 \(lowbit\) 寫/jy/jy
回顧一下 \(lowbit(x)\) 為 \(x\) 在二進位制下最低位的1和後面的0構成的數,其實就是 \(x\) 可以整除的最大的 \(2^i (i\in N)\)。這個就是每個小序列的長度。太困了明天再寫/yun