學習記錄

2019.1

2019.1.28

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

【集訓隊做業2018】【UOJ443】

  直接上 quantum phase estimation algorithm 就行了。後端

2019.1.31

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

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,又墊底了。spa

2019.2.10

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

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

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

相關文章
相關標籤/搜索