日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

AtCoder Regular Contest 061

發(fā)布時間:2023/12/4 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 AtCoder Regular Contest 061 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

  • 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)化

考慮對每個點延伸出max{ci}max\{ c_i\}max{ci?}個點,編號為1,2,...,max{ci}1,2,...,max\{c_i\}1,2,...,max{ci?},將這個點與延伸出的點連邊,邊權(quán)為111,讓后對于邊(a,b,c)(a,b,c)(a,b,c)我們將aaa延伸出的ccc號點與bbb延伸出的ccc號點連接,邊權(quán)為000,此時跑dikstradikstradikstra就是答案了。

但是細心的小伙伴就發(fā)現(xiàn)了,上面建圖不還是n2n^2n2嗎?考慮每個點延伸出來的每個點不一定有用,所以刪去沒用的,剩下有用的個數(shù)就是O(m)O(m)O(m)級別的了。

復(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 mmccc出現(xiàn)≤k\le kk,序列長度范圍是[n,n+m+k][n,n+m+k][n,n+m+k],我們枚舉當(dāng)前的序列長度,然后考慮組合數(shù)學(xué)求出方案。

假設(shè)當(dāng)前枚舉的長度是iii,首先最后一次也就是第iii次一定是aaa,讓后剩下的n+m+k?in+m+k-in+m+k?i個位置任意,就有3n+m+k?i3^{n+m+k-i}3n+m+k?i種,所以我們需要先從i?1i-1i?1個中選n?1n-1n?1個,這個比較簡單就是(i?1n?1)\binom{i-1}{n-1}(n?1i?1?),此時剩下了n?in-in?i個位置,我們需要將b,cb,cb,c都填入這幾個位置,并且他們長度都滿足要求。一個比較暴力的做法就是枚舉bbb的長度,讓后判斷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)這個復(fù)雜度是O(n2)O(n^2)O(n2)的,網(wǎng)上有題解說像楊輝三角。。沒看出來,但是不難發(fā)現(xiàn)我們的問題就是從iii個里面選xxxbbbyyyccc,并且合法,那么定義f[i]f[i]f[i]代表長度為iii的時候合法的數(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的時候如果i?1i-1i?1個位置里面有mmm個位置是bbb,那么就是不合法的需要減去,對于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的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。