學習記錄


2019.1

2019.1.28

  去學習了一下 QFT 和 quantum phase estimation algorithm。

【集訓隊作業2018】【UOJ443】

  直接上 quantum phase estimation algorithm 就好了。

2019.1.31

  打了場 Codeforces Round #536 (Div. 2),又墊底了。

2019.2

2019.2.3

【WC2019】【LOJ2983】數樹

  題解

【WC2019】【LOJ2985】I 君的商店

  最暴力的方法:
   先用 \(2n\) 次操作找出一個 \(1\)
   然后每次選擇兩個數 \(x,y(x\leq y)\),拿 \(x+y\)\(1\) 比。
   如果 \(x+y\leq 1\),那么 \(x=0\);否則 \(y=1\)
   這樣就可以用 \(5n\) 次操作確定所有數。
   總的操作次數約為 \(7n\)

  正解:
   先不找 \(1\),隨便找一個數 \(z\)
   還是每次選兩個數 \(x,y(x\leq y)\),拿 \(x+y\)\(1\) 比。
   如果 \(x+y\leq z\),那么 \(x=0\);否則 \(y\geq z\),這時候拿 \(y\) 去代替 \(z\)
   這樣就可以用 \(5n\) 次操作確定出一堆 \(0\)、一條鏈和一個數。
   然后在鏈上二分就好了。
   總的操作次數約為 \(5n+3\log_2 n\)

  打了場 CodeCraft-19 and Codeforces Round #537 (Div. 2),又墊底了。

2019.2.7

  打了場 Codeforces Global Round 1,又墊底了。

2019.2.10

  打了場 Codeforces Round #538 (Div. 2),又墊底了。

2019.2.15

  打了場 牛客練習賽40,又墊底了。

2019.2.25

  打了場 USACO 2019 February Contest, Bronze,又墊底了。

  打了場 USACO 2019 February Contest, Silver,又墊底了。

  打了場 USACO 2019 February Contest, Gold,又墊底了。

2019.2.26

  打了場 USACO 2019 February Contest, Platinum,又墊底了。

2019.3

2019.3.2

  打了場 洛谷3月月賽,又墊底了。

【LUOGUP5241】序列

  烤倉鼠真好吃。
  把SCC縮成一個點后,一條鏈+一堆點組成的圖就可以構造出所有的序列。
  為了讓不影響SCC個數的邊數最多,肯定是讓這條鏈的第一個SCC包含很多個點,剩下的SCC只包含一個點。
  考慮DP:\(f_{i,j,k}\) 為加了 \(i\) 條邊后,鏈上有 \(j\) 個SCC,除了這條鏈外還有 \(k\) 個點的方案數。
  每次可以選擇把前若干個SCC縮到一起。如果 \(k>0\),就可以把一個點接到鏈的最后端,否則可以加一條不影響SCC的邊。
  直接做的復雜度是 \(O(n^4)\) 的。
  可以發現,當 \(i>2n\) 時只有 \(k=0\) 時的值才 \(\neq 0\)
  這樣就可以把復雜度降到 \(O(n^3)\) 了。

2019.3.5

【USACO 2019 February Contest, Platinum】Mowing Mischief

  先把走到每個點的最多步數算出來,然后把步數相同的點分到一組,記為 \(g(i)\)。顯然對於同一組中的點 \(i,j\),若 \(x_i>x_j\)\(y_i<y_j\)
  對於相鄰兩組DP一下,轉移為:

\[f_i=\min_j (f_j+(x_i-x_j)(y_i-y_j))~~i\in g(k),j\in g(k-1) \]

  考慮 \(q_1,q_2\in g(k-1),x_{q_1}<x_{q_2},p_1,p_2\in g(k),x_{p_1}<x_{p_2}\),有:若 \(q_1\) 轉移到 \(p_1\)\(q_2\) 轉移到 \(p_1\) 要優,則 \(q_1\) 轉移到 \(p_2\)\(q_2\) 轉移到 \(p_2\) 要優。(這個把式子拆開算一下就好了)
  記 \([l_i,r_i]\)\(i\in g(k-1)\) 可以轉移到的 \(g(k)\) 中的區間。顯然任意兩個 \([l_i,r_i],[l_j,r_j]\) 不互相嚴格包含。(這里嚴格包含指的是包含且左端點不同且右端點不同)
  我們可以把 \(g(k)\) 切成若干個區間,滿足 \([l_i,r_i]\) 不被任意一個區間嚴格包含,且 \([l_i,r_i]\) 最多與兩個區間相交。
  方法如下:對於一個區間的左端點,找到最右的右端點使得這個區間不嚴格包含任何 \([l_i,r_i]\)。可以證明,這個方法滿足條件。
  這樣,一個 \([l_i,r_i]\) 一定是一個區間的前綴或后綴,分兩部分DP一下就好了。DP過程類似決策單調性優化DP(不過是反過來的)。
  官方題解

2019.3.30

  打了場 USACO 2019 US Open Contest, Platinum,又墊底了。

  打了場 計蒜客的比賽,又墊底了。

2019.4

2019.4.13

  打了場奇怪的 2050 Programming Competition,又墊底了。

2019.4.21

【BJOI2019】奧術神杖

  先取個對數,然后就是經典套路了:二分答案,在 AC 自動機上面DP就好了。

【BZOI2019】勘破神機

  你可以打個表然后 BM,可以找到一個長度為 \(O(k)\) 的遞推式。
  你也可以推通項公式,然后就可以直接算了。
  當 \(m=2\)

\[\begin{align} f_n&=ar^n+bs^n\\ f_n^k&=(ar^n+bs^n)^k\\ &=\sum_{i=0}^k\binom{k}{i}a^ir^{in}b^{k-i}s^{n(k-i)}\\ &=\sum_{i=0}^k\binom{k}{i}a^ib^{k-i}(r^is^{k-i})^n \end{align} \]

  然后等比數列求和就好了。

2019.4.22

【BJOI2019】排兵布陣

  直接 \(O(snm)\) 背包就好了。

【BJOI2019】光線

  設從第 \(i\) 個玻璃射向第 \(i+1\) 個玻璃的光的總量是 \(f_i\),從第 \(i+1\) 個玻璃射向第 \(i\) 個玻璃的光的總量是 \(g_i\)
  那么有方程:\(f_{i+1}=a_if_i+b_ig_i,g_{i-1}=a_ig_i+b_if_{i-1}\),其中 \(f_0=1,g_n=0\)
  移一下項就可以得到 \(f_i,g_i\) 關於 \(f_{i-1},g_{i-1}\) 的表達式。
  用 \(g_0\) 表示所有其他的變量,然后把 \(g_n=0\) 帶進去就可以得到所有的值。

【BJOI2019】刪數

  有一個很容易發現的結論:假設有 \(c_i\)\(i(1\leq i\leq n)\),那么答案就是 \(n-(\) 所有 \([i-c_i+1,i]\) 的並對 \([1,n]\) 求交之后的長度)。
  拿個線段樹維護區間並就好了。

2019.4.27

  打了場 計蒜客的比賽,又墊底了。

2019.4.28

【LOJ6608】無意識的石子堆

  先建一個二分圖,環和鏈分開算
  環的很好算,隨便推一推就退出來了(不用卷積)。
  \(f_i=\sum_{j\leq i-2}i(i-1)^2(i-2)^2\cdots(j+1)^2f_j\)
  一條鏈的方案數是 \(g^1_0=1,g^1_i=\frac{i(i+1)}{2}\)
  構造一個生成函數 \(G^1(x)=\sum_{i}\frac{g^1_ix^i}{i!(i+1)!}\)
  這樣 \((G^1(x))^2=G^2(x)=\sum_i\frac{g^2_ix^i}{i!(i+2)!}\)
  \(G^k(x)=\sum_{i}\frac{g^k_ix^i}{i!(i+k)!}\)
  然后容易算出 \(G^k(x)=(\frac{2-x}{2(1-x)})^k\)
  最后 \(g^k_i\) 的系數要除以 \(k!\)(因為有 \(k!\) 種加入順序)
  答案為 \(s=\sum_i f_ig_{n-i}\binom{n}{i}\binom{m}{i}\)

2019.4.29

【XSY2056】吃特色菜

  題目大意:給你 \(n,l,x,k\),你要選出 \(6\) 個整數,滿足 \(1\leq a_1\leq a_2\leq a_3\leq a_4\leq a_5\leq x<l\leq a_6\leq n\),且同一個數最多選 \(k\) 個,且 \(\sum_{i=1}^5a_i>a_6\)\(n-l\leq 100,n\leq {10}^9\)
  枚舉最大的數,然后數位DP,記 \(f_{i,j,k,0/1,0/1}\) 為考慮了最 \(i\) 個二進制位,只考慮這些位的情況下,這 \(5\) 個數的大小關系為 \(j\),進位為 \(k\),最大的數與 \(x\)的大小關系為 \(0/1\),和與 \(a_6\) 的大小關系為 \(0/1\) 的方案數。

2019.5

2019.5.4

【LUOGUP5348】密碼解鎖

  題目大意:給你 \(n',m\),有 \(\sum_{i\mid j}a_j=\mu(i)[i\leq n']\),求 \(a_m\)\(m\leq {10}^9,\frac{n'}{m}\leq {10}^9\)
  先莫比烏斯反演一下,令 \(n=\frac{n'}{m}\)。那么 \(a_m=\sum_{i=1}^n\mu(i)\mu(im)=\mu(m)\sum_{i=1}^n[\gcd(i,m)=1]\mu^2(i)\)
  考慮無平方因子數是怎么算的,就是枚舉每個完全平方數 \(i^2\),然后計算 \(i^2\) 的倍數,容斥一下。
  對於一個完全平方數 \(i^2\),如果 \(\gcd(i,m)=1\),那么 \(\gcd(i^2j,m)=\gcd(j,m)\),就只用求 \(\sum_{j=1}^\frac{n}{i^2}[\gcd(m,j)=1]\),再莫比烏斯反演一下就能算了;如果 \(\gcd(i,m)\neq 1\),那么 \(\gcd(i^2j,m)\neq 1\),貢獻就是 \(0\) 了。
  復雜度不會算。上限是 \(O(\sqrt n\sigma_0(m))\) 。預處理前 \(S\) 項的話復雜度是 \(O(S+\sqrt{\frac{n}{S}}\sigma_0(m))\)

【LUOGUP5349】冪

  題目大意:給 \(n,f(x),q\),求 \(\sum_{k=0}^\infty f(k)q^k\bmod p\)\(n\leq {10}^5,0<q<1\)\(p\) 是一個模數,
  解法一:
   令 \(f_k=\sum_{i=0}^\infty i^kq^i\),那么

\[\begin{align} qf_k&=\sum_{i=0}^\infty i^kq^{i+1}\\ (1-q)f_k&=q\sum_{i=0}^\infty((i+1)^k-i^k)q^i\\ &=q\sum_{i=0}^\infty \sum_{j=0}^{k-1}\binom{k}{j}i^jq^i\\ &=q\sum_{j=0}^{k-1}\binom{k}{j}\sum_{i=0}^\infty i^jq^i\\ &=q\sum_{j=0}^{k-1}\binom{k}{j}f_j\\ f_k&=\frac{q}{1-q}\sum_{i=0}^{k-1}\binom{k}{i}f_i\\ \frac{f_k}{k!}&=\frac{q}{1-q}\sum_{i=0}^{k-1}\frac{f_i}{i!}\frac{1}{(k-i)!}\\ \frac{1}{1-q}F(x)&=\frac{q}{1-q}F(x)e^x+\frac{1}{1-q}\\ F(x)&=qF(x)e^x+1\\ F(x)&=\frac{1}{1-qe^x} \end{align} \]

  解法二:

\[ab+(a+d)bq+(a+2d)bq^2+\cdots\\ =b(a(1+q+q^2+\cdots)+d(q+2q^2+3q^3+\cdots))\\ =\frac{ab}{1-q}+\frac{bd}{(1-q)^2} \]

   咕咕咕。

2019.5.25

  打了下 APIO2019 網絡賽。

【APIO2019】A

  打一下表(或者找規律),就可以發現循環節為 \(\frac{\frac{AB}{\gcd(A,B+1)}}{}\),且每個循環節內的數對互不相同。

【APIO2019】C

  三維數點送分題。

2019.5.26

  打了一下計蒜之道初賽。

【計蒜客】上升子序列

  題目大意:給一個序列,你要把它划分為兩個上升子序列,問兩個子序列長度之差最小是多少。\(n\leq {10}^5\)
  先把無解的情況判掉,然后把這個序列划分為若干段,每段包含兩個上升子序列且每段划分上升子序列的方案是唯一的,並且每一段的最小值大於前一段的最大值。然后每個子序列可以選每段中的任意一部分,直接分治 FFT 就好了。復雜度 \(O(n\log^2n)\)

2019.6

2019.6.16

  打了一下計蒜之道復賽,又墊底了。

2019.7

2019.7.19

  打了一場NOI,又墊底了。

2019.8

2019.8.24

  打了一下計蒜之道決賽,又墊底了。

2019.10

2019.10.14

  打了一下百度之星決賽,又墊底了。

  打了一下 https://codeforces.com/contest/1235 ,又墊底了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM