題解 lg4158 SCOI2009 粉刷匠

2022-03-06 13:16:08 字數 840 閱讀 1102

給 n 條每條被劃分成 m 個格仔的木板每個格仔刷顏色,每一次刷只能刷一條木板連續的一段,且每乙個格仔最多只能粉刷一次,一共只能刷 t 次,問能夠正確的刷多少格仔.

有乙個很顯然的性質,就是一條木板要是要塗就一定會塗滿但bakaのfpjo顯然沒有注意到這一點

且還有每乙個格仔最多只能粉刷一次

然後就很好來寫dp轉移了

設 \(g(i,j,k)\)第\(i\) 條木板的前\(j\)個格仔塗上\(k\)次的最大正確粉刷格仔數,\(pre(i,j)\)表示第\(i\)條木板的前\(j\)個格仔中藍色的數量明顯有

\[g(i,j,k)=max_(g(i,l,k-1)+max(pre(j)-pre(l),i-l-(pre(j)-pre(l))))

\]然後考慮\(f(i,k)\)表示前\(i\)條木板塗\(k\)次的最大答案

\[f(i,k)=max_(f(i-1,k-j)+g(i,m,j))

\]

#includeusing namespace std;

int const maxn=60,maxt=2600;

int n,m,t,ans=0;

int pre[maxn][maxn],g[maxn][maxn][maxt],f[maxn][maxt];

char str[maxn];

int main()

} for(int i=1;i<=n;i++)

}} }

for(int k=1;k<=t;k++)

} }printf("%d\n",ans);

return 0;

}

洛谷 4158 SCOI2009 粉刷匠

題目描述 windy有 n 條木板需要被粉刷。每條木板被分為 m 個格仔。每個格仔要被刷成紅色或藍色。windy每次粉刷,只能選擇一條木板上一段連續的格仔,然後塗上一種顏色。每個格仔最多只能被粉刷一次。如果windy只能粉刷 t 次,他最多能正確粉刷多少格仔?乙個格仔如果未被粉刷或者被粉刷錯顏色,就...

SCOI2009 粉刷匠(分組揹包)

windy有 n 條木板需要被粉刷。每條木板被分為 m 個格仔。每個格仔要被刷成紅色或藍色。windy每次粉刷,只能選擇一條木板上一段連續的格仔,然後塗上一種顏色。每個格仔最多只能被粉刷一次。如果windy只能粉刷 t 次,他最多能正確粉刷多少格仔?乙個格仔如果未被粉刷或者被粉刷錯顏色,就算錯誤粉刷...

SCOI2009 迷路 題解

恢復內容開始 題目描述 windy 在有向圖中迷路了。該有向圖有 nnn 個節點,windy 從節點 000 出發,他必須恰好在 ttt 時刻到達節點 n 1n 1n 1。現在給出該有向圖,你能告訴 windy 總共有多少種不同的路徑嗎?注意 windy 不能在某個節點逗留,且通過某有向邊的時間嚴格...