題面見校內oj4693
考慮預處理f[k
][i]
[j
]f[k][i][j]
f[k][i
][j]
表示最長的一段不超過k
kk的時候,將長度為i
ii的序列分為j
jj段的方案數。
在k
kk相同的狀態之間轉移,顯然有f[i
][j]
=f[i
−1][
j]+f
[i−1
][j−
1]−f
[i−k
−1][
j−1]
f[i][j]=f[i-1][j]+f[i-1][j-1]-f[i-k-1][j-1]
f[i][j
]=f[
i−1]
[j]+
f[i−
1][j
−1]−
f[i−
k−1]
[j−1
],考慮新的這個數是否放在原來的最後乙個段中就行了。
然後分成j
jj段,顯然就需要從n
nn種不同的數中選擇j
jj種就行了。
用long double可以避免炸精度。
然而我考場上覺得可能會炸就沒寫。
痛失難得的一次ak機會
tm又是只a了t2t3就差t1的一場考試
**:
#include
#define ll long long
#define re register
#define cs const
typedef
long
double ld;
cs int n=
251;
ld f[n]
[n][n]
;ld sum[n]
,c[n]
;inline
void
init()
}}inline
void
solve()
ld ans=
0,tot=sum[m]
;for
(int re i=
1;i<=m;
++i)
printf
("%.7lf\n",(
double
)ans);}
signed
main()
校內模擬 鎖
沒有標籤是因為我真的不知道這算什麼型別 這題我說不來大意你們還是看題面描述吧 小z住的房子一共有n個人,他們每人有乙個重要度。房子的門上可以裝若干把鎖。假設共有k把鎖,命名為1到k。每把鎖有一種對應的鑰匙,也用1到k表示。鑰匙可以複製若干份並發給任意多個居民。每個人都可以持有若干鑰匙,可以不持有鑰匙...
2019 10 03 校內模擬
內網傳送門 很明顯的乙個網路流。轉換一下題意,相當於求保留航線的最大值。所以我們把邊權取負跑最小費用流。有乙個坑點,就是我們只需要費用最小,不要求流量最大,所以不應該用最小費用最大流。有兩個解決辦法 用最小費用可行流。連 i,t,1,0 i,t,1,0 i,t,1 0 的邊,表示不選 i ii 連出...
2019 10 12 校內模擬
內網傳送門 今天考 noip 模擬,拿了 270 27027 0 分,我要膨脹了。主要還是運氣好,t3 做過原題,t2 算是某道題的弱化版,t1 推了個結論用 o n log 2n o n log 2n o nlog2n 水過了 106 10 6 106 的資料。這題其實挺簡單的,把圖的點雙求出來之...