https://www.luogu.org/problemnew/show/P2623

https://www.luogu.org/blog/test-1/solution-p2623

重点就是甲类物品最多取一个,一定能取到最优解。。。

 #include<cstdio>
#include<algorithm>
#include<cstring>
#include<vector>
using namespace std;
#define fi first
#define se second
#define mp make_pair
#define pb push_back
typedef long long ll;
typedef unsigned long long ull;
typedef pair<ll,ll> pll; ll ans[],an2;
//前i个物品,用j的容量的最大价值
vector<pll> dd;
ll n,m;
int main()
{
ll idx,i,j,k,a,b,c;
scanf("%lld%lld",&n,&m);
for(i=;i<=n;i++)
{
scanf("%lld",&idx);
if(idx==)
{
scanf("%lld%lld",&a,&b);
dd.pb(mp(a,b));
}
else if(idx==)
{
scanf("%lld%lld%lld",&a,&b,&c);
if(b==)
{
for(j=;j<=m;j++) ans[j]+=a*c;
}
else
{
for(j=m;j>=;j--)
{
for(k=min(c,j/b);k>=;k--)
{
ans[j]=max(ans[j],ans[j-k*b]+k*a);
}
}
}
}
else if(idx==)
{
scanf("%lld%lld",&a,&b);
if(b==) exit(-);
else
{
for(j=b;j<=m;j++)
{
ans[j]=max(ans[j],ans[j-b]+a);
}
}
}
//for(int i=0;i<=m;i++) printf("a%lld %lld\n",i,ans[i]);
}
for(i=;i<=m;i++) ans[i]=max(ans[i],ans[i-]);
an2=ans[m];
for(i=;i<dd.size();i++)
{
for(j=;j<=m;j++)
{
an2=max(an2,ans[m-j]+dd[i].fi*j*j-dd[i].se*j);
}
}
printf("%lld",an2);
return ;
}

最新文章

  1. CSharpGL(28)得到高精度可定制字形贴图的极简方法
  2. Android APP压力测试(三)之Monkey日志自动分析脚本
  3. redis(一) 安装以及基本数据类型操作
  4. phpcms get标签用法
  5. 前序/中序---&gt;后序
  6. Redis数据持久化之AOF持久化
  7. 两个学生OJ差集
  8. uva1658 admiral
  9. ASP.NET MVC5总结(四)登陆中常用技术解析之验证码
  10. 灵活运用绑定变量---declare匿名块使用绑定变量
  11. SQL 2008 数据库迁移
  12. C、C++用指针引用的差异
  13. STL笔记之set
  14. 【转】Java 并发:Executors 和线程池
  15. Spring Boot Document Part II(下)
  16. Leetcode_75_Sort Colors
  17. JVM调优入门之初探
  18. webpack(3)-管理资源
  19. CF508E
  20. circRNA

热门文章

  1. [coci2011]友好数对 容斥
  2. eclipse配置SVN
  3. xmlToEntity or entityToXML 工作笔记
  4. 扩散(diffusion)和弥散(dispersion)有什么区别
  5. servlet与jsp理论知识讲解
  6. smarty模板引擎基础(二)
  7. 存储过程系列三:根据表别名方式distinct去重插入
  8. 七号信令中TUP协议的主要消息和故障问题
  9. 编写 DockerFile
  10. stdout引发的curl 302跳转 crash