记录编号 |
559640 |
评测结果 |
AAAAAAAAAA |
题目名称 |
自助者天助 |
最终得分 |
100 |
用户昵称 |
遥时_彼方 |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.257 s |
提交时间 |
2021-03-22 21:43:43 |
内存使用 |
2.53 MiB |
显示代码纯文本
#include<bits/stdc++.h>
#define ull unsigned long long
#define ll long long
using namespace std;
int nc,vc;
int ki[101][3];
int kn;
int n[30001][2],nn;
int v[30001];
void ad(int x)
{
for(int i=0;(1<<i)<=ki[x][2];i++)
{
n[++nn][0]=ki[x][0]*(1<<i);
n[nn][1]=ki[x][1]*(1<<i);
ki[x][2]-=(1<<i);
}
if(ki[x][2])
{
n[++nn][0]=ki[x][0]*ki[x][2];
n[nn][1]=ki[x][1]*ki[x][2];
}
return;
}
int main()
{
freopen("delicious.in","r",stdin);
freopen("delicious.out","w",stdout);
cin>>nc>>vc;
int s1,s2;
int pt=1;
for(int i=1;i<=nc;i++)
{
pt=1;
scanf("%d%d",&s1,&s2);
// cout<<s1<<" "<<s2<<endl;
for(int o=1;o<=kn;o++)
{
if(ki[o][0]==s1&&ki[o][1]==s2)
{
ki[o][2]++;
pt=0;
break;
}
}
if(pt)
{
ki[++kn][0]=s1;
ki[kn][1]=s2;
ki[kn][2]++;
// cout<<endl<<ki[kn][0]<<endl;
}
}
// cout<<endl;
// for(int i=1;i<=kn;i++) cout<<i<<": "<<ki[i][0]<<" "<<ki[i][1]<<" "<<ki[i][2]<<"\n";
for(int i=1;i<=kn;i++) ad(i);
// for(int i=1;i<=nn;i++) cout<<i<<": "<<n[i][0]<<" "<<n[i][1]<<"\n";
for(int i=1;i<=nn;i++)
{
for(int o=vc;o>=n[i][0];o--) v[o]=max(v[o],v[o-n[i][0]]+n[i][1]);
// cout<<i<<": "<<v[vc]<<endl;
}
cout<<v[vc]<<endl;
return 0;
}