题目参见COGS或洛谷
话说为什么要刷这么水的01背包啊。。。//还不是为刷洛谷试炼场提高组做铺垫
在这里奉劝大家珍爱生命,远离水题。
这么水的题就不加注释了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
#include <iostream> #include <cstdio> #include <algorithm> using namespace std; struct node { int v, p, t; }fa[30]; int n, m; int a[30][100005]; int main() { //freopen("happy.in","r",stdin); //freopen("happy.out","w",stdout); cin>>n>>m; for(int i=1;i<=m;i++) { scanf("%d%d",&fa[i].p,&fa[i].v); fa[i].t=fa[i].v*fa[i].p; } for(int i=1;i<=m;i++) { for(int j=1;j<=n;j++) { if(j>=fa[i].p) { a[i][j]=max(a[i-1][j],a[i-1][j-fa[i].p]+fa[i].t); } else a[i][j]=a[i-1][j]; } } cout<<a[m][n]<<"\n"; return 0; } |