USACO1996 錄製唱片

2022-07-22 13:45:14 字數 937 閱讀 8065

貝西想從奶牛搖滾樂隊的 n 首歌裡挑出一些錄製一套**。**分 k 張唱片,每張唱片可容納 總長為 c 分鐘的歌曲。第 i 首歌的長度為 ti 分鐘,錄製唱片時,唱片之間的歌曲需要保持原本的順 序。第一張唱片裡的歌必須排在第二張唱片前面,之後的每張唱片裡也是如此。同時,每首歌曲必須 完整地放在一張唱片裡,不然,就只能捨去不錄了。請問貝西應該選哪些歌曲,才能讓**裡裝下的 歌曲盡量多?

第一行:三個整數 n, k 和 c, 1 ≤ n ≤ 1000 , 1 ≤ k ≤ 1000 , 1 ≤ c ≤ 1000 • 第二行到第 n + 1 行:第 i + 1 行有乙個整數 ti, 1 ≤ ti ≤ 1000

單個整數:表示可以裝進**的歌曲數目

4 2

5 4

3 4 23

設f[i,j]表示前i首歌錄了j首所需的最少唱片數,g[i,j]表示前i首歌錄了j首當前唱片使用了多少容量。

f[i,j]=min(f[i-1,j-1](+1),f[i-1,j])

如果第i首歌要錄並且能錄進當前唱片裡,f[i,j]= f[i-1,j-1],

如果錄不進,另開一張唱片,f[i,j],=f[i-1,j-1]+1;

如果第i首歌不錄,並且使用的唱片數小於第i首歌錄進去的唱片數,自然不錄,如果相等,選擇當前唱片使用容量最少的方案,這樣以後才能錄更多。這裡記得要保證i!=j(否則就變成前i-1首歌錄了i首)。

#include int n,m,c,a[1005],f[1005][1005],g[1005][1005

];const

int inf=2147483647/4

;int

main()

for (i=n;i>=1;i--)

if (f[n][i]break

; printf("%d

",i);

return0;

}

grub1 99 編譯安裝

2 編譯 解壓 grub 1.99.tar.gz 然後進入grub 1.99,配置 configure prefix opt grub2 編譯 make 安裝 make install 3 安裝 進入 opt grub2 sbin,執行下面命令 grub install root directory...

USACO 修理牛棚

同樣是一道貪心題,我的思路是用乙個陣列存下所有的空擋,對空擋進行排序,然後再在總長度中減去前m 1 大的空檔長度。關鍵還是理解題意。貌似洛谷 oj不支援 int min 之類的。還有要對初始資料排一次序,害我 wa了一次。include include includeusing namespace ...

USACO 奶牛電信

題目鏈結 洛谷1345 題目大意 給出乙個 n 個點 m條邊的無向圖,與 s,t 問至少刪去多少個點,使 s,t 不連通。n 100,m 600 分析 1.對於這種分離s,t 的題,考慮最大流 最小割的方法。2.然而題目要求割點,而不是割邊,怎麼辦?這就是一種經典的拆點題。3.把每個點 i 拆成兩個...