#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std ;
const int N=;
int f[N],g[N],q[N];
int n,m;
int a[N];
int main() {
cin>>n>>m;
for(int i=; i<=n; i++) {
int v,w,s;
cin>>v>>w>>s;
if(s==) { //完全背包
for(int j=v; j<=m; j++)
f[j]=max(f[j],f[j-v]+w);
} else {
if(s==-)//如果是01背包
s=;//换成s就只有1
memcpy(g,f,sizeof f);
for(int j=; j<v; j++) {
int hh=,tt=-;
for(int k=j; k<=m; k+=v) {
if(hh<=tt&&q[hh]<k-s*v)
hh++;
if(hh<=tt)
f[k]=max(f[k],g[q[hh]]+(k-q[hh])/v*w);
while(hh<=tt&&g[q[tt]]-(q[tt]-j)/v*w<=g[k]-(k-j)/v*w)
tt--;
q[++tt]=k;
}
}
}
}
cout<<f[m]<<endl;
return ;
}

最新文章

  1. HTML5 地理位置定位(HTML5 Geolocation)原理及应用
  2. 初识canvas,使用canvas做一个百分比加载进度的动画
  3. windows server 远程连接设置
  4. java的string常用操作
  5. kettle使用log4j管理输出日志
  6. Javascript动态加载Html元素到页面Dom文档结构时执行顺序的不同
  7. 如何让div水平垂直居中
  8. poj - 2774 - Long Long Message
  9. JNI编程(二) —— 让C++和Java相互调用(1)
  10. android中使用setVideoURI()播放视频
  11. TableLayout中怎么填充相同的布局
  12. 更好的抽屉效果(ios)
  13. WordPress在Centos下Apache设置伪静态方法
  14. 利用树莓派来安装opencv从而来调动摄像头工作(没有坑,超超自己试过)
  15. Git入门到高级系列2-git高级操作
  16. html5 required属性的注意事项
  17. C#基础知识回顾--串行化与反串行化
  18. 翻译:探索GLSL-用几何着色器(着色器库)实现法线可视化
  19. 深入分析tcp close与shutdown
  20. ASP.NET mvc下在Controller下action的跳转方式

热门文章

  1. Vue使用v-for显示列表时,数组里的item数据更新,视图中列表不同步更新的解决方法
  2. 【查阅】Chrome快捷键
  3. centos 记录所有用户操作命令的脚本
  4. 什么是AOP面向切面编程思想
  5. 【JZOJ 5048】【GDOI2017模拟一试4.11】IQ测试
  6. Elasticsearch之文档的增删改查以及ik分词器
  7. clr via c# 泛型
  8. &lt;Wonder Woman&gt; 摘抄
  9. 用Markdown编写
  10. 【学习笔记】B站-2019-NLP(自然语言处理)之 BERT 课程 -- 相关课程笔记