题目:http://poj.org/problem?id=2228

dp[i][j][0/1]表示前i小时中第j小时睡(1)或不睡(0)的最优值;

注意第一个小时,若睡则对最终取结果有要求,即第n个小时必须睡,所以据此DP两遍;

可以开滚动数组,否则容易MLE。

代码如下:

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
long long ans,f[3][4000][2];
int n,u[4000],b;
int main()
{scanf("%d%d",&n,&b);for(int i=1;i<=n;i++)scanf("%d",&u[i]);memset(f,-2,sizeof f);f[1][0][0]=0;f[1][1][1]=0;for(int i=2;i<=n;i++)for(int j=0;j<=min(i,b);j++){f[i%2][j][0]=max(f[(i-1)%2][j][0],f[(i-1)%2][j][1]);if(j)f[i%2][j][1]=max(f[(i-1)%2][j-1][0],f[(i-1)%2][j-1][1]+u[i]);}for(int j=0;j<=b;j++)ans=max(ans,max(f[n%2][j][0],f[n%2][j][1]));memset(f,-2,sizeof f);f[1][1][1]=u[1];for(int i=2;i<=n;i++)for(int j=0;j<=min(i,b);j++){f[i%2][j][0]=max(f[(i-1)%2][j][0],f[(i-1)%2][j][1]);if(j)f[i%2][j][1]=max(f[(i-1)%2][j-1][0],f[(i-1)%2][j-1][1]+u[i]);}for(int j=0;j<=b;j++)ans=max(ans,f[n%2][j][1]);printf("%lld",ans);return 0;
}

转载于:https://www.cnblogs.com/Zinn/p/8605706.html

poj2228Naptime——环形DP相关推荐

  1. codevs1085数字游戏(环形DP+划分DP )

    1085 数字游戏  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题目描述 Description 丁丁最近沉迷于一个数字游戏之中.这个游戏看似简单,但丁丁在 ...

  2. 【环形dp】poj 2228 Naptime

    题目链接 题意:一天分为N个时间片(可顺到下一天->环形),选择其中B个睡觉.选择第i个时间片能获得u_i点值,但是选择的一个区间内的第一个时间片用来入睡(没睡着),无法获得u_i值.问最大能获 ...

  3. P3575-[POI2014]DOO-Around the world【环形dp】

    正题 题目大意:https://www.luogu.org/problemnew/show/P3575 题目大意 一个环,上面有若干个点,若干个询问xxx. 表示上一个降落点和下一个降落点距离不能超过 ...

  4. FUZ-2204-7环形dp

    个人博客链接:https://blog.nuoyanli.com/2020/04/02/fuz2204/ 原题链接 http://acm.fzu.edu.cn/problem.php?pid=2204 ...

  5. poj 2228 环形DP

    题意: 一天有n个时间,有一只牛希望一天可以休息睡小时.如果牛在第i时刻已经熟睡,他可以得到ui的休息.但是如果他在i时刚刚入睡,他不能得到休息.牛可以从前一天晚上睡到第二天.睡觉时间也不一定连续.问 ...

  6. Vijos1451圆环取数[环形DP|区间DP]

    背景 小K攒足了路费来到了教主所在的宫殿门前,但是当小K要进去的时候,却发现了要与教主守护者进行一个特殊的游戏,只有取到了最大值才能进去Orz教主-- 描述 守护者拿出被划分为n个格子的一个圆环,每个 ...

  7. 51nod 1050 循环数组最大子段和【环形DP/最大子段和/正难则反】

    1050 循环数组最大子段和 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题  收藏  关注 N个整数组成的循环序列a[1],a[2],a[3],-,a[n],求该 ...

  8. 传球游戏-----环形DP

    题目链接 思路:f[i][j]表示传了i次,且第i次在第j个小朋友手里的方案数 每个状态只能由左右两个小朋友转移而来 顾状态转移方程为:f[i][j]=f[i-1][(j-1+n)%n]+f[i-1] ...

  9. AC自动机 + 概率dp + 高斯消元 --- HDU 5955 or 2016年沈阳icpc H [AC自动机 + 概率dp + 高斯消元]详解

    题目链接 题目大意: 就是有NNN个人,每个人都会猜一个长度为LLL的只包含{1,2,3,4,5,6}\{1,2,3,4,5,6\}{1,2,3,4,5,6}的序列,现在裁判开始投掷骰子,并且把每次的 ...

最新文章

  1. Androidの多线程之更新ui(AsyncTask)
  2. 计算机领域中信息经转化,统考计算机应用基础06091002真题
  3. 如何系统性掌握深度学习中的数据使用
  4. C语言strstr()函数(在主字符串里查找子字符串,返回第一次找到的子字符串以及后面的字符串)
  5. 【机器学习基础】数学推导+纯Python实现机器学习算法1:线性回归
  6. go 数据添加元素和删除特定元素
  7. 四叶草引导windows和linux,Windows环境下使用Clover四叶草引导双硬盘安装OSX 10.11.5原版镜像...
  8. spss三次指数平滑_17 统计学:SPSS基础
  9. wince6.0 s5pv210 中断
  10. LeetCode 53最大子序和
  11. Android聊天室(源码)
  12. 沪牌学院-沪拍拍课堂2: 出价策略
  13. Flutter开发一个云音乐APP(包含接口地址,亲测可用)
  14. 奥城大学计算机专业,我大四了,托福84,gre1571612.02..._GRE考试_帮考网
  15. 金融科技大数据产品推荐:金融魔方 ---专业的金融SaaS服务平台
  16. controller实现
  17. 巧用 @JvmName 解决 Kotlin 函数签名冲突
  18. php查询数据库表中的id个数,GitHub - xindong/easy-total: 一个可以对预先设定的sql语句进行实时数据统计并输出结果的服务...
  19. 利用GN算法进行社区发现
  20. 小米9008授权账号_如果你用的小米手机,花60秒关闭这4个功能,手机能远离卡顿...

热门文章

  1. 财务软件进销存有哪些功能?好用的有哪几款?
  2. cmd命令卸载ie9、10、11
  3. MIMIKATZ编译教程
  4. 支付宝支付和微信支付的记录和总结
  5. 11、ByteBuffer(分散读集中写)
  6. 干货分享「UC3842内部工作原理」
  7. Kaggle 2022 年鉴发布!涵盖竞赛趋势 57场比赛方案汇总!
  8. PHPAPI接口开发返回json数据
  9. R-GIS: 如何用R语言实现GIS地理空间分析及模型预测
  10. 【array-java】531. Lonely Pixel I