校內模擬 assignment(DP)

2021-09-26 23:20:12 字數 1237 閱讀 6774

題面見校內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 的資料。這題其實挺簡單的,把圖的點雙求出來之...