1 solutions
-
0
C :
#include "stdio.h" int n,m; int a[11][11],f[100001]; int main() { int i,j,k; int x,y; scanf("%d%d",&n,&m); for(i=0;i<n;i++) { scanf("%d%d",&x,&y); a[x][y]++; } for(i=1;i<=10;i++) { for(j=1;j<=10;j++) { if(!a[i][j]) continue; x=1; while(x<a[i][j]) { for(k=m;k>=x*i;k--) if(f[k]<f[k-x*i]+x*j) f[k]=f[k-x*i]+x*j; a[i][j]-=x; x*=2; } x=a[i][j]; for(k=m;k>=x*i;k--) if(f[k]<f[k-x*i]+x*j) f[k]=f[k-x*i]+x*j; } } printf("%d\n",f[m]); return 0; }
C++ :
#include<iostream> #include<cstdio> using namespace std; int main() { int tim,sum; cin>>sum>>tim; int num[11][11]={0}; int x,y; for(int i=1;i<=sum;i++) { cin>>x>>y; num[x][y]++; } int w[100001],c[100001]; int f[100001]={0}; int t,s; int tot=0; int p=0; for(int i=1;i<10;i++) { for(int j=1;j<=10;j++) { t=1,s=num[i][j]; while(s>=t) { c[p]=t*j; w[p]=t*i; p++; s-=t; t*=2; } c[p]=s*j; w[p]=s*i; p++; } } for(int i=1;i<=p;i++) { for(int j=tim;j>=w[i];j--) { if(f[j]<f[j-w[i]]+c[i]) { f[j]=f[j-w[i]]+c[i]; } } } cout<<f[tim]; }
- 1
Information
- ID
- 779
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- (None)
- Tags
- # Submissions
- 0
- Accepted
- 0
- Uploaded By