給 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 不能在某個節點逗留,且通過某有向邊的時間嚴格...