作业
题目大意
- 就是不同的作业对于光光来说,批评的力度是不同的。第 i 件作业如果没完成,就要受到 pi 个单位的批评。多次这样之后,光光想要在长假前就知道他至少会受到多少个单位的批评.
输入样例
5
3
2 6
1 3
4 7
输出样例
6
数据范围
- 【数据范围】
100%的数据中, k<=100000, ti<=10000, pi<=10000;
30%的数据中, n<=20;
100%的数据中, n<=500.
解题思路
其实这道题就是一道背包,把总批评减去最多的消去值即可.
程序如下
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int n,m,t,p,sum,a[100001];
int main()
{
freopen("homework.in","r",stdin);
freopen("homework.out","w",stdout);
scanf("%d%d",&n,&m);
for(int i=1;i<=m;++i)
{
scanf("%d%d",&t,&p);
sum+=p;//总批评值
for(int j=n;j>=t;--j)
{
a[j]=max(a[j],a[j-t]+p);//最大减去值
}
}
printf("%d",sum-a[n]);
return 0;
}