POJ 2228. Naptime
链接
http://poj.org/problem?id=2228
题意
在一天 nnn 个小时中取 bbb 个小时,使权值和最大,bbb 个小时可分成若干段,每段的第一个小时的权值不计入总和,第 nnn 个小时与第一个小时相连
思路
记 f[i][j][0]f[i][j][0]f[i][j][0] 为前 iii 个小时中睡了 jjj 个小时且第 iii 个小时不在睡,f[i][j][1]f[i][j][1]f[i][j][1] 为前 iii 个小时中睡了 jjj 个小时且第 iii 个小时在睡
转移方程:
{f[i][j][0]=max(f[i−1][j][0],f[i−1][j][1])f[i][j][1]=max(f[i−1][j−1][0],f[i−1][j−1][1]+w[i])\begin{cases} f[i][j][0]=\max(f[i-1][j][0],f[i-1][j][1]) \\ f[i][j][1]=\max(f[i-1][j-1][0],f[i-1][j-1][1]+w[i]) \end{cases}{f[i][j][0]=max(f[i−1][j][0],f[i−1][j][1])f[i][j][1]=max(f[i−1][j−1][0],f[i−1][j−1][1]+w[i])
因为首尾相连,所以第 nnn 个小时会影响第一个小时
当第 nnn 个小时没有睡:f[1][0][0]=f[1][1][1]=0f[1][0][0]=f[1][1][1]=0f[1][0][0]=f[1][1][1]=0,结果为 f[n][b][0]f[n][b][0]f[n][b][0]
当第 nnn 个小时在睡:f[1][0][0]=0,f[1][1][1]=w[1]f[1][0][0]=0,f[1][1][1]=w[1]f[1][0][0]=0,f[1][1][1]=w[1],结果为 f[n][b][1]f[n][b][1]f[n][b][1]
取最大值
代码
#include<bits/stdc++.h>
using namespace std;
const int N=4000;
int w[N];
int f[N][2];
int main() {ios::sync_with_stdio(false);cin.tie(0);int n,b;cin>>n>>b;for(int i=1;i<=n;i++) cin>>w[i];memset(f,0xc0,sizeof f);f[0][0]=f[1][1]=0;for(int i=2;i<=n;i++)for(int j=min(i,b);j>=0;j--) {f[j][0]=max(f[j][0],f[j][1]);if(j) f[j][1]=max(f[j-1][0],f[j-1][1]+w[i]);}int res=f[b][0];memset(f,0xc0,sizeof f);f[0][0]=0,f[1][1]=w[1];for(int i=2;i<=n;i++)for(int j=min(i,b);j>=0;j--) {f[j][0]=max(f[j][0],f[j][1]);if(j) f[j][1]=max(f[j-1][0],f[j-1][1]+w[i]);}res=max(res,f[b][1]);cout<<res<<endl;return 0;
}
POJ 2228. Naptime相关推荐
- 【环形dp】poj 2228 Naptime
题目链接 题意:一天分为N个时间片(可顺到下一天->环形),选择其中B个睡觉.选择第i个时间片能获得u_i点值,但是选择的一个区间内的第一个时间片用来入睡(没睡着),无法获得u_i值.问最大能获 ...
- poj 2228 Naptime(DP的后效性处理)
\(Naptime\) 描述 Goneril是一只睡眠不足的母牛.她的一天被划分为N(3 <= N <= 3,830)相等的时间段,但她只能在床上花费B(2 <= B <N)不 ...
- poj 2228 Naptime
题目 从N个元素(环形队列)中选出B个,求最大得分.(元素得分仅当其前面的元素也被选择了) 分析 我就不想口胡了 链接 现在知道了处理环上的dp还能这样玩 code #include<iostr ...
- Naptime POJ - 2228
环形dp 分为两种情况:N休息 N不休息 #include<cstdio> #include<cstring> #include<algorithm> #inclu ...
- Naptime 【POJ - 2228】
题目链接 题目大意 有一只牛要休息m个时间段,现在有n个时间段可以供选择,一个时间段有一个睡眠价值,这m个时间段可以连续也可以不连续,每次睡觉的第一个时间段时不获得睡眠价值的,这个牛可以从第一天的晚上 ...
- poj 2228 环形DP
题意: 一天有n个时间,有一只牛希望一天可以休息睡小时.如果牛在第i时刻已经熟睡,他可以得到ui的休息.但是如果他在i时刚刚入睡,他不能得到休息.牛可以从前一天晚上睡到第二天.睡觉时间也不一定连续.问 ...
- POJ前面的题目算法思路【转】
1000 A+B Problem 送分题 49% 2005-5-7 1001 Exponentiation 高精度 85% 2005-5-7 1002 487-3279 n/a 90% 2005-5- ...
- POJ 动态规划题目列表
1.这份列表当然不是我原创的,从文库里下载了一份,放到这里便于自己浏览和查找题目. ※最近更新:Poj斜率优化题目 1180,2018,3709 列表一:经典题目题号: 容易: 1018, 1050 ...
- POJ 超详细分类
POJ 各题算法 1000 A+B Problem 送分题 49% 2005-5-7 1001 Exponentiation 高精度 ...
最新文章
- 对云计算的忽视是 银行的战略失误
- C/C++ 框架,类库,资源集合
- 第85讲:Scala中For表达式的强大表现力实战
- html如何左侧固定div,详解左右宽度固定中间自适应html布局解决方案
- windows服务器远程执行命令(PowerShell+WinRM)
- 7006.vue项目之电商项目实战1-环境搭建及后台接口测试
- 聊聊spring for kafka对consumer的封装与集成
- 探索SQL Server元数据(一)
- 火狐浏览器的同步问题
- kindle文件转PDF文件
- Excel加密07版本及03版本
- 【windows】Webstorm2021安装教程
- 苹果手机13和小米手环6NFC,录入“不支持类型”的门禁卡
- 在Python中如何方便的制作个性化的词云图
- 通过网格拆分高德地图
- Android压缩图片和libjpeg库
- Python画出时钟
- 基于动态阈值、灰色世界、镜面法的自动白平衡
- 2008年,永动机启动第四次科技革命
- 云教学服务器系统软件多少钱,LanStarMaxi多机房云教学管理平台
热门文章
- linux命令查看删除哪些文件,linux删除文件除命令有哪些
- 联想m8000t安装windows2003蓝屏的解决方法
- ReactOS版本规划
- html意见反馈源码,意见反馈实例源码
- python求向量函数的雅可比矩阵_python – scipy中最小二乘函数的雅可比行列式的方法签名...
- 暗黑破坏神3ptr服务器位置,暗黑破坏神3——野蛮人1.05 PTR服务器测评 附BOSS攻略...
- can总线不加末端电阻_高手写的CAN总线入门总结,对全面理解CAN总线特性很有帮助...
- 通达信W底形态选股公式,也称双底形态
- jfinal基本概述
- python怎么安装pandas详细步骤