POJ的第2个题。也是动归,其中dp[i][j]表示是第i个时刻,门开到j的程度时的最大价值。

当然了状态比较好想的,此时刻的价值必然与前面的时刻是有关的,联系就是前一个时刻的j,也就是与前一时刻的门的程度是相关的,并且一个时刻门只有三种可能。1:开一个单位。2:关一个单位。3:与之前的一样。并且要使用滚动数组来做这个,不然我的内存可能会超,没试过因为这种动态转移方程一般都用滚动数组来节省空间,直接看会就是一劳永逸的事了。下面附代码。

#include<iostream>
#include<algorithm>
using namespace std;
struct node{int time;int value;int silm;
};
node gangster[110];
int mark[30010];
int dp[3][110];
bool cmp(node a,node b)
{if(a.time<b.time)return true;else return false;
}
int maxi(int a,int b)
{if(a>b)return a;else return b;
}
int main()
{int N,K,T,i,j,w,p,mabi;cin>>N>>K>>T;for(i=1;i<=N;i++){cin>>gangster[i].time;mark[gangster[i].time]=1;}for(i=1;i<=N;i++)cin>>gangster[i].value;for(i=1;i<=N;i++)cin>>gangster[i].silm;sort(gangster+1,gangster+1+N,cmp);mabi=0;for(i=0;i<=T;i++)for(j=0;j<=i&&j<=K;j++){w=0;dp[i%2][j]=0;if(mark[i]==1){for(p=1;p<=N;p++){if(gangster[p].time==i&&gangster[p].silm==j)w=w+gangster[p].value;}}if(j==0){dp[i%2][j]=maxi(dp[1-i%2][j],dp[1-i%2][j+1]);}else if(j==K){dp[i%2][j]=maxi(dp[1-i%2][j],dp[1-i%2][j-1]);}else dp[i%2][j]=maxi(maxi(dp[1-i%2][j],dp[1-i%2][j-1]),dp[1-i%2][j+1]);dp[i%2][j]+=w;if(dp[i%2][j]>mabi)mabi=dp[i%2][j];}cout<<mabi<<endl;return 0;
}

这个程序应该能优化时间复杂度的,以前做过一个。以后可能有补充。

poj 1036 Gangsters相关推荐

  1. POJ 1036 Gangsters 笔记

    N个人吃饭,K种门的状态,0到T时间营业.顾客Ti时到,带Pi元钱,门禁号Si,当门禁号与门状态相同时能进入.开始是门的状态是0,每个时刻门状态只能打开一个或关闭一个或保持不变.求营业最大收入.

  2. 寒假练习题解 第二周 1.25-1.31

    每日一练 1.25 Problem A Luxurious Houses 题意:给 n 个数 a[i],问使得 a[i] 为 [i,n] 最大值的时候需要给 a[i] 增加多少 简析:可以倒着扫一遍, ...

  3. POJ前面的题目算法思路【转】

    1000 A+B Problem 送分题 49% 2005-5-7 1001 Exponentiation 高精度 85% 2005-5-7 1002 487-3279 n/a 90% 2005-5- ...

  4. POJ 动态规划题目列表

    1.这份列表当然不是我原创的,从文库里下载了一份,放到这里便于自己浏览和查找题目. ※最近更新:Poj斜率优化题目 1180,2018,3709 列表一:经典题目题号: 容易:  1018, 1050 ...

  5. POJ 超详细分类

    POJ 各题算法 1000    A+B Problem            送分题     49%    2005-5-7 1001    Exponentiation         高精度   ...

  6. poj动态规划经典题目

    列表一:经典题目题号: 容易: 1018, 1050, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 1189, 1191,1208, 1276, 1322, 1 ...

  7. 【转】别人整理的DP大全

    为什么80%的码农都做不了架构师?>>>    动态规划 动态规划 容易: 1018 , 1050 , 1083 , 1088 , 1125 , 1143 , 1157 , 1163 ...

  8. POJ 1449 amp; ZOJ 1036 Enigma(简单枚举)

    本文纯属原创,转载请注明出处.谢谢. 题目传送门:http://poj.org/problem?id=1449 Time Limit: 1000MS   Memory Limit: 10000K   ...

  9. (并查集 带关系)Find them, Catch them -- poj -- 1703

    链接: http://poj.org/problem?id=1703 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 3676 ...

最新文章

  1. python为什么用号做注释符_Python为什么用#号作注释符?
  2. 和牛奶太多量竟然会发胖~
  3. Pipeline Performance Management - Sales target configuration customizing
  4. 用正则表达式捕获标识符——随便说
  5. oracle客户端中文乱码问题的解决
  6. 操作系统之进程管理:14、读者-写者问题
  7. ogc是一个非营利性组织_我们的非营利组织如何公开运作以使教育变得容易
  8. Python编程基础07:选择结构
  9. LeetCode 159. 至多包含两个不同字符的最长子串 (滑动窗口哈希表)
  10. IEEE正推进制定量子计算标准
  11. HDOJ 5091 Beam Cannon 扫描线
  12. Altium Designer安装教程
  13. Win10电脑怎么用命令修复系统文件
  14. 计算机主机的拆卸的注意事项,拆解笔记本注意事项及技巧!
  15. 周年更名,元宇宙产业委再上新台阶
  16. 如何把python可视化到前端_Python一行代码搞定炫酷可视化,就用这个工具!
  17. 网络编程0:网络基础知识
  18. 绘画作品/系统赏析与评论
  19. 中国科技的家底是什么?
  20. 相量和向量的区别详细介绍(并以电路电磁场中的量进行对照说明)

热门文章

  1. windows10 RocketMQ启动 mqbroker 异常
  2. 论文阅读:SUPER: A Novel Lane Detection System
  3. Git 工具 - 贮藏与清理
  4. JavaWeb Filter 过滤器
  5. dds提取工具_多媒体资源提取工具(MultiExtractor)
  6. ALSA (高级Linux声音架构)、ASOC基础知识
  7. 打印机文件里没有服务器属性,win7没有打印机服务器属性设置
  8. GoogleMap的简单用法
  9. 办理护照(学生集体户口)~备用
  10. Django MVT模型详解