博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu3535题解
阅读量:7314 次
发布时间:2019-06-30

本文共 1241 字,大约阅读时间需要 4 分钟。

   hdu3535:

  该题是非常全面的一道分组背包问题。其实理解了最多一个的分组背包问题,解题起来也是很简单的。但是该题卡了我3天,真让人郁闷。就是因为一个case过不了,里面的时间ci可以为0!!!测试数据中竟然有0分钟这种事情!!!

  题解:

  

#include
#include
#include
#include
using namespace std;int dp[2][100+20];typedef struct Job{ int ci; int gi;}Job;int main(){ int n,t; while(~scanf("%d%d",&n,&t)) { int s[n]; vector
vjob[n]; for(int i=0;i
=0;--v) { int ci = vjob[i][j].ci; int gi = vjob[i][j].gi; if(v >= ci) { if(dp[0][v-ci] != -1) dp[0][v] = max(dp[0][v],dp[0][v-ci]+gi); if(dp[1][v-ci] != -1) dp[0][v] = max(dp[0][v],dp[1][v-ci]+gi); } } } } //最多1 else if(s[i]==1) { for(int v=t;v>=0;--v) { for(int j=0;j
= ci) { if(dp[0][v-ci] != -1 && ci != 0) { dp[0][v] = max(dp[0][v],dp[0][v-ci]+gi); } else if(ci==0 && dp[1][v] != -1) { //测试数据中竟然有0分钟这种事情!!! dp[0][v] = max(dp[0][v],dp[1][v]+gi); } } } } } //随意 else if(s[i]==2) { for(int j=0;j
=0;--v) { int ci = vjob[i][j].ci; int gi = vjob[i][j].gi; if(v >= ci) { if(dp[0][v-ci] != -1) dp[0][v] = max(dp[0][v],dp[0][v-ci]+gi); } } } } } printf("%d\n",dp[0][t]); } return 0;}
View Code

 

转载于:https://www.cnblogs.com/jlyg/p/7211130.html

你可能感兴趣的文章
nginx 负载均衡实现
查看>>
linux 学习笔记 tcpdump ethtool
查看>>
JavaScript学习-类/原型链/class
查看>>
Qt编写机房安全作业预警系统
查看>>
最优化-可行方向法
查看>>
javaWeek1学习总结
查看>>
iOS推送通知的实现步骤
查看>>
0012-求滑动距离
查看>>
瀑布流的简单实现
查看>>
jQuery笔记(三)jQuery中的事件
查看>>
【jBox】2.3正式版 多功能jQuery对话框插件下载及常见使用问题解答
查看>>
sudo echo permission denied
查看>>
[BZOJ] 3163: [Heoi2013]Eden的新背包问题
查看>>
phpcms使用总结
查看>>
%你赛第2期题解
查看>>
参加2019华为软件精英挑战赛心得
查看>>
Android——初探Dagger2依赖注入
查看>>
P1205 方块转换
查看>>
不能在 Page 回调中调用 Response.Redirect 解决方法
查看>>
Android帧缓冲区(Frame Buffer)硬件抽象层(HAL)模块Gralloc的实现原理分析
查看>>