【普及组模拟赛】作业
題目描述
光光上了高中,科目增多了。在長(zhǎng)假里,光光的老師們都非常嚴(yán)厲,都給他布置了一定量的作業(yè)。假期里,光光一共有的時(shí)間是 k 小時(shí)。在長(zhǎng)假前,老師們一共給光光布置了 n份作業(yè),第 i 份作業(yè)需要的時(shí)間是 ti 小時(shí)。但是由于老師們互相不商量,因此光光有可能不能完成老師的作業(yè)。當(dāng)可能不能完成老師的作業(yè)時(shí),光光就事后去向老師說明,然后被老師批評(píng)一頓了事。對(duì)于一件作業(yè),只有 2 種情況:完成或者不完成(快要完成也算不完成)。
如果沒完成,受到批評(píng)是天經(jīng)地義的。但是,不同的作業(yè)對(duì)于光光來說,批評(píng)的力度是不同的。第 i 件作業(yè)如果沒完成,就要受到 pi 個(gè)單位的批評(píng)。多次這樣之后,光光想要在長(zhǎng)假前就知道他至少會(huì)受到多少個(gè)單位的批評(píng)。你能幫助他嗎?
輸入
輸入文件的第一行只有一個(gè)數(shù)字 k。
第二行只有一個(gè)數(shù)字 n。
接下來 n 行,每行兩個(gè)數(shù)字,分別是 ti 和 pi,兩個(gè)數(shù)字之間用一個(gè)空格分開。
輸出
輸出文件 homework.out 僅包含一行,是一個(gè)數(shù)字,代表了光光最少受到的批評(píng)。
樣例輸入
5
3
2 6
1 3
4 7
樣例輸出
6
數(shù)據(jù)范圍限制
【數(shù)據(jù)范圍】
100%的數(shù)據(jù)中, k<=100000, ti<=10000, pi<=10000;
30%的數(shù)據(jù)中, n<=20;
100%的數(shù)據(jù)中, n<=500。
分析
這題其實(shí)就是一個(gè)0/1背包
先就總和,再求最大可以減少的批評(píng),最后輸出它們的差。
程序:
uses math; var k,n,i,j:longint; tj:int64; f:array[0..100000]of int64; w,v:array[0..600]of longint; beginassign(input,'homework.in');reset(input);assign(output,'homework.out');rewrite(output);readln(k);readln(n);tj:=0;for i:=1 to n dobeginreadln(w[i],v[i]);tj:=tj+v[i];end;for i:=1 to n dofor j:=k downto w[i] dof[j]:=max(f[j],f[j-w[i]]+v[i]);write(tj-f[k]);close(input);close(output); end.轉(zhuǎn)載于:https://www.cnblogs.com/YYC-0304/p/9500006.html
總結(jié)
以上是生活随笔為你收集整理的【普及组模拟赛】作业的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【普及组模拟赛】家族
- 下一篇: 香烟