學習筆記

Bao111發表於2024-04-14

前言

先鴿一下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