洛谷【P1156】垃圾陷阱
来源:互联网 发布:辐射4阴影优化 编辑:程序博客网 时间:2024/05/21 18:48
也是一眼能看出来的01背包,但是状态不太好选择,可以选择时间也可以选择高度,其实都差不多,时空要求比较低,我选择高度作为的状态,选择了状态和决策之后,状态转移方程就显而易见了,比较难处理的是对于不能达到时的情况,第一遍提交的时候有一个点没过,就是因为第二种情况没写好,不过其实画个图还蛮好写的。
#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<string>#define max(a,b) (a>b?a:b)#define min(a,b) (a<b?a:b)using namespace std;int sumt,uppon,dp[1010][110],n,d,m;struct trash{ int t,f,h;}tr[110];int cmp(const trash &a,const trash &b){return a.t<b.t;} int main(){ //freopen("std.in","r",stdin); sumt=10;uppon=0; cin>>d>>n; for (int i=1;i<=n;i++) cin>>tr[i].t>>tr[i].f>>tr[i].h; sort(tr+1,tr+n+1,cmp); memset(dp,-1,sizeof(dp)); dp[0][0]=10;tr[0].t=0;tr[0].f=0; for (int i=1;i<=n;i++) { int c=tr[i].t-tr[i-1].t; uppon+=tr[i].h; for (int j=uppon;j>=0;j--) { if (dp[i-1][j]>=c)//注意这里的边界值,题目没有说明,但是样例里已经暗示了 dp[i][j]=max(dp[i][j],dp[i-1][j]+tr[i].f-c); if (j>=tr[i].h)dp[i][j]=max(dp[i][j],dp[i-1][j-tr[i].h]-c); if (j>=d&&dp[i][j]>=0){cout<<tr[i].t;return 0;} } } int ans=10,k; for (int i=1;i<=n;i++)//判断如果到达不了的话 { ans+=tr[i].f;k=sumt; sumt=sumt+tr[i-1].t-tr[i].t+tr[i-1].f; if (sumt<0){cout<<ans-tr[i].f;return 0;} } cout<<ans; return 0;}
0 0
- 洛谷P1156 垃圾陷阱
- 洛谷 P1156 垃圾陷阱
- 洛谷P1156 垃圾陷阱
- 洛谷【P1156】垃圾陷阱
- 洛谷 P1156 垃圾陷阱
- 洛谷 P1156 垃圾陷阱
- 洛谷p1156垃圾陷阱
- 洛谷 [P1156] 垃圾陷阱
- 【DP】洛谷 P1156 垃圾陷阱
- 洛谷P1156 垃圾陷阱 背包DP
- |洛谷|动态规划|P1156 垃圾陷阱
- P1156 垃圾陷阱
- P1156 垃圾陷阱
- 洛谷P1156 垃圾陷阱(DP,0-1背包)
- P1156 垃圾陷阱(dp)有待理解
- 洛谷P1156
- 洛谷1156 垃圾陷阱
- 洛谷1156垃圾陷阱
- 2016年小码哥JAVA大神班第一期
- 解决UTF8+BOM编码xml文件解析异常
- 矩阵的测试
- C#设置注册表权限失败,修改应用程序以管理员身份执行
- Emgu Image RGB图转成灰度图
- 洛谷【P1156】垃圾陷阱
- 微服务协议选择
- 【12月16日】THUCTC实现基于支持向量机中文文本分类
- Android读取asset目录的文件转File
- Q-Dir取消直接打开zip文件,采用系统默认程序打开zip文件
- MYSQL性能测试
- ie浏览器兼容笔记
- 六款值得推荐的android(安卓)开源框架简介
- OpenVAS 9从源码安装到使用(填坑铺路)