星影落九天,鱼雁舞千弦。但为君沉吟,落日天涯圆。


[题目传送门]

先考虑若不是环的情况

设状态为dp[i][j][0/1]dp[i][j][0/1]dp[i][j][0/1]:

dp[i][j][0]dp[i][j][0]dp[i][j][0]表示前iii段睡了jjj段且iii段没睡前iii段的最大效用值

dp[i][j][1]dp[i][j][1]dp[i][j][1]表示前iii段睡了jjj段且iii段睡了前iii段的最大效用值

那么状态转移方程即为:
dpi,j,0=max(dpi−1,j,0,dpi−1,j,1)dp_{i,j,0}=max(dp_{i-1,j,0},dp_{i-1,j,1})dpi,j,0​=max(dpi−1,j,0​,dpi−1,j,1​)
dpi,j,1=max(dpi−1,j−1,0+0,dpi−1,j−1,1+ai)dp_{i,j,1}=max(dp_{i-1,j-1,0}+0,dp_{i-1,j-1,1}+a_{i})dpi,j,1​=max(dpi−1,j−1,0​+0,dpi−1,j−1,1​+ai​)

dpi,j,0/1dp_{i,j,0/1}dpi,j,0/1​的初值为-INF

那么对于环,只需要强制连接第nnn段与第111段

即:将dp1,0,0dp_{1,0,0}dp1,0,0​的初值赋为a1a_{1}a1​即可

Code

#include<bits/stdc++.h>
#define FQ(i,a,b) for(register int i=a;i<=b;i++)
#define prf printf
#define scf scanf
#define ll long long
using namespace std;
int INF;
const int N=3835;
int n,m,ans,a[N],F[N][N][2];
ll read()
{ll x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}return x*f;
}
int main()
{INF=-128/2;n=read(),m=read();memset(F,INF,sizeof(F));for(int i=1;i<=n;i++)a[i]=read();for(int i=1;i<=n;i++)F[i][0][0]=0;F[1][1][1]=0;for(int i=2;i<=n;i++)for(int j=1;j<=m;j++){     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]+0,F[i-1][j-1][1]+a[i]);        }   ans=max(F[n][m][1],F[n][m][0]);    memset(F,INF,sizeof(F));for(int i=1;i<=n;i++)F[i][0][0]=0;F[1][1][1]=a[1];for(int i=2;i<=n;i++)for(int j=1;j<=m;j++){    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]+0/*不计i的效用值*/,F[i-1][j-1][1]+a[i]); }ans=max(ans,F[n][m][1]);printf("%d\n",ans);return 0;
}

USACO05JAN「Naptime」相关推荐

  1. 如何直观地理解「协方差矩阵」?

    如何直观地理解「协方差矩阵」? Xinyu Chen Urban Traffic Data Analytics 372 人赞同了该文章 协方差矩阵在统计学和机器学习中随处可见,一般而言,可视作方差和协 ...

  2. 消除左递归实验代码_「leetcode」108. 构造二叉搜索树【递归】【迭代】详解!

    构造二叉搜索树,一不小心就平衡了 ❞ 108.将有序数组转换为二叉搜索树 将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树. 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树 ...

  3. 不带头节点的链表有哪些缺点_23张图!万字详解「链表」,从小白到大佬!

    链表和数组是数据类型中两个重要又常用的基础数据类型. 数组是连续存储在内存中的数据结构,因此它的优势是可以通过下标迅速的找到元素的位置,而它的缺点则是在插入和删除元素时会导致大量元素的被迫移动,为了解 ...

  4. 一位老码农的分享:一线程序员该如何面对「中年危机」?

    如果这是第二次看到我的文章,欢迎文末扫码订阅我个人的公众号(跨界架构师)哟~   本文长度为2728字,建议阅读8分钟. 坚持原创,每一篇都是用心之作- 先来聊一下这个问题的背景吧. 前两天有小伙伴问 ...

  5. 机器人 Ameca「苏醒」瞬间逼真到令人恐惧,网友纷纷惊叹……

    整理 | 禾木木 出品 | AI科技大本营(ID:rgznai100) 近日,国内外网友都被一段机器人「苏醒」的视频惊讶到. 视频开始时,机器人似乎已经睡着,眼睛闭着,头部略微向下倾斜.随着肩膀的伸展 ...

  6. AI 复活「她」! GPT-3 帮美国小哥复刻逝去未婚妻,但又夺走她……

    整理 | 禾木木 出品 | AI科技大本营(ID:rgznai100) 今年 7 月,一名33岁的美国小哥 Joshua Barbeau 在未婚妻去世后,根据她在 Facebook 和 twitter ...

  7. OpenAI 以 10 亿美元出售「灵魂」,网友热评不再「Open」

    编译 | 禾木木 出品 | AI科技大本营(ID:rgznai100) OpenAI 如何以 10 亿美元的价格出售其灵魂:GPT-3 和 Codex 背后的公司并不像它声称的那样开放. 当金钱成为障 ...

  8. 「软件」2.0时代已经到来,你需要这样的开发工具

    互联网催生了软件的繁荣,而在AI浪潮的推动下,软件正在朝着更「智能」的方向发展,也就是「软件2.0」时代.「软件2.0」其实就是神经网络,也就是这一波AI浪潮的基石. 在「软件1.0」时代,程序员用J ...

  9. 嵌入式开发「坑」太多?MathWorks 高级工程师教你 debug

    文/ 朱雪妍 据博思数据发布的<2018-2023年中国嵌入式软件行业市场发展现状调研与投资趋势前景分析报告>表明:2018年上半年我国嵌入式系统软件收入达4240.2亿元,累计增长6.6 ...

最新文章

  1. java ojdbc 还需要装 oracle client 吗,c# 连接Oracle数据库必须安装客户端吗
  2. ECCV 2020 五项大奖出炉!李飞飞高徒、徒孙共摘最佳论文奖
  3. wps分享为什么要登入_【知识点分享】钢筋上的螺纹有什么作用?为什么要有螺纹?...
  4. logistic回归 简介_金融专业进!逻辑回归模型简述
  5. php离线自动执行,离线执行php任务
  6. ASP.NET Core 6.0对热重载的支持
  7. 来看一场 AI 重建的 3D 全息世界杯比赛!
  8. python按哪个键删除_Python-从字典中删除键的方法
  9. $(document).ready
  10. Windows Moible, Wince 使用.NET Compact Framework的进行蓝牙(Bluetooth)广播程序的开发
  11. 数据增强操作(旋转、翻转、裁剪、色彩变化、高斯噪声等)
  12. 2022年最新版黑马程序员Java自学路线(免费分享)
  13. Linux入门基础学习参考资料
  14. 微信小程序实现微信企业付款到零钱功能的流程
  15. 计算机d盘可以格式化吗,d盘怎么格式化
  16. tomcat 配置文件 conf/server.xml 中的 appBase和docBase
  17. ArcGis 10.2运行提示“未授权”的解决方法
  18. h5后缀文件python处理
  19. 除法运算符号“/” ——不同形式参数,商的不同
  20. Linux2--修改root密码,文件操作

热门文章

  1. 运维工程师技术面试指导
  2. 汇编语言中常用进制数据输出的程序实现
  3. [图形学] Killzone: Shadow Fall 中的体积光效果
  4. 马太效应(Matthew effect) 强者愈强 弱者愈弱
  5. 推荐一款简单的页面加密网页(免费的哦)
  6. 通过java agent监控程序执行
  7. 月薪5w的大佬都爱用的SWOT分析法,本文分析透了!
  8. 软件开发外包的10个理由
  9. python ai自动剪辑视频_你知道吗?Python也可以剪辑视频!
  10. 2019度小满秋招研发编程题_数字的情绪