AtCoder Regular Contest 061
文章目錄
- C - Many Formulas
- D - Snuke's Coloring
- E - Snuke's Subway Trip
- F - Card Game for Three
傳送門
C - Many Formulas
Score : 300300300 points 爆搜
直接dfsdfsdfs爆搜即可
復(fù)雜度O(2n)O(2^n)O(2n)
代碼
D - Snuke’s Coloring
Score : 400400400 points
考慮有標(biāo)記的3×33×33×3的格子很少,所以直接暴力跑這些格子即可。
復(fù)雜度O(n)O(n)O(n)
代碼
E - Snuke’s Subway Trip
Score : 600600600 points 優(yōu)化建圖 + dijkstradijkstradijkstra
經(jīng)典建圖了,考的n2?>nn^2->nn2?>n建圖的優(yōu)化
考慮對(duì)每個(gè)點(diǎn)延伸出max{ci}max\{ c_i\}max{ci?}個(gè)點(diǎn),編號(hào)為1,2,...,max{ci}1,2,...,max\{c_i\}1,2,...,max{ci?},將這個(gè)點(diǎn)與延伸出的點(diǎn)連邊,邊權(quán)為111,讓后對(duì)于邊(a,b,c)(a,b,c)(a,b,c)我們將aaa延伸出的ccc號(hào)點(diǎn)與bbb延伸出的ccc號(hào)點(diǎn)連接,邊權(quán)為000,此時(shí)跑dikstradikstradikstra就是答案了。
但是細(xì)心的小伙伴就發(fā)現(xiàn)了,上面建圖不還是n2n^2n2嗎?考慮每個(gè)點(diǎn)延伸出來的每個(gè)點(diǎn)不一定有用,所以刪去沒用的,剩下有用的個(gè)數(shù)就是O(m)O(m)O(m)級(jí)別的了。
復(fù)雜度O(mlogn)O(mlogn)O(mlogn)
代碼
F - Card Game for Three
Score : 110011001100 points 組合數(shù)學(xué) + 容斥dpdpdp
將若干操作考慮成一組操作序列,合法序列應(yīng)該滿足如下要求:aaa出現(xiàn)恰好nnn次,bbb出現(xiàn)≤m\le m≤m,ccc出現(xiàn)≤k\le k≤k,序列長(zhǎng)度范圍是[n,n+m+k][n,n+m+k][n,n+m+k],我們枚舉當(dāng)前的序列長(zhǎng)度,然后考慮組合數(shù)學(xué)求出方案。
假設(shè)當(dāng)前枚舉的長(zhǎng)度是iii,首先最后一次也就是第iii次一定是aaa,讓后剩下的n+m+k?in+m+k-in+m+k?i個(gè)位置任意,就有3n+m+k?i3^{n+m+k-i}3n+m+k?i種,所以我們需要先從i?1i-1i?1個(gè)中選n?1n-1n?1個(gè),這個(gè)比較簡(jiǎn)單就是(i?1n?1)\binom{i-1}{n-1}(n?1i?1?),此時(shí)剩下了n?in-in?i個(gè)位置,我們需要將b,cb,cb,c都填入這幾個(gè)位置,并且他們長(zhǎng)度都滿足要求。一個(gè)比較暴力的做法就是枚舉bbb的長(zhǎng)度,讓后判斷ccc是否符合條件,總方案就是(i?1n?1)?3n+m+k?i?∑x=0m[i?n?x<=k](i?nx)\binom{i-1}{n-1}*3^{n+m+k-i}*\sum_{x=0}^{m}[i-n-x<=k]\binom{i-n}{x}(n?1i?1?)?3n+m+k?i?∑x=0m?[i?n?x<=k](xi?n?),但是容易發(fā)現(xiàn)這個(gè)復(fù)雜度是O(n2)O(n^2)O(n2)的,網(wǎng)上有題解說像楊輝三角。。沒看出來,但是不難發(fā)現(xiàn)我們的問題就是從iii個(gè)里面選xxx個(gè)bbb,yyy個(gè)ccc,并且合法,那么定義f[i]f[i]f[i]代表長(zhǎng)度為iii的時(shí)候合法的數(shù)量,轉(zhuǎn)移方程: f[i]=f[i?1]?2?(i?1m)?(i?1k)f[i]=f[i-1]*2-\binom{i-1}{m}-\binom{i-1}{k}f[i]=f[i?1]?2?(mi?1?)?(ki?1?),含義是當(dāng)前第iii位置可以選b,cb,cb,c,這樣就是f[i?1]?2f[i-1]*2f[i?1]?2,但是當(dāng)選bbb的時(shí)候如果i?1i-1i?1個(gè)位置里面有mmm個(gè)位置是bbb,那么就是不合法的需要減去,對(duì)于ccc同理。預(yù)處理出來之后答案就很好算了,iii位置的總方案就是(i?1n?1)?3n+m+k?i?f[i?n]\binom{i-1}{n-1}*3^{n+m+k-i}*f[i-n](n?1i?1?)?3n+m+k?i?f[i?n]
復(fù)雜度O(n)O(n)O(n)
代碼
總結(jié)
以上是生活随笔為你收集整理的AtCoder Regular Contest 061的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 生蛇是什么病
- 下一篇: Codeforces Beta Roun