【codevs2497】 Acting Cute
这个题个人认为是我目前所做的最难的区间dp了,以前把环变成链的方法在这个题上并不能使用,因为那样可能存在重复计算
我第一遍想的时候就是直接把环变成链了,wa了5个点,然后仔细思考一下就发现了问题
比如这个样例
5 4
1 2 4 1 1
这个样例变成链以后就是这样
1 2 4 1 1 1 2 4 1 1
在这个链上,很明显,取[2,3]和[7,8]是最优方案,答案是8,但是很容易可以算出,这个样例真正答案是7,2+4+1。
因此这个方法是不可行的,我在查阅了网上唯一的题解发现,这个问题可以灰常巧妙的用初始赋值来解决,我们可以进行两遍递推,第一遍认为第一个点不可以被加进答案,第二遍认为第二个点可以被加进答案
第一遍非常好理解,是基于不考虑时间成环的,第二个有点难想,假如第一个点能选,则说明至少在原序列终点及以前以前有个点是卖萌开始的起始点
那么我们处理的时候,会认为在原序列上,从真实的起始点一直到最后原序列终点被选了
比如这个样例
5 3
5 1 1 1 3
1 0 0 1 1 0为未选择,1为选择
答案是8,第二遍递推会认为1-1,4-5这两个区间合起来是答案,就是这样来保证正确性的。
#include<iostream> #include<cstdio> using namespace std; int n,m,dp[2][3610][2],qwq[7210],ans,t; inline void init() {for(int j=0;j<=m;j++)dp[0][j][0]=dp[0][j][1]=dp[1][j][0]=dp[1][j][1]=-1e9; } void dp1() {t=0;for(int i=2;i<=n;i++){t=1-t;for(int j=0;j<=m;j++){dp[t][j][0]=max(dp[1-t][j][0],dp[1-t][j][1]);if(j>0)dp[t][j][1]=max(dp[1-t][j-1][0],dp[1-t][j-1][1]+qwq[i]);}} } int main() {scanf("%d%d",&n,&m);if(m<=1)//特判一下,如果卖萌时间就给了1或0,答案一定为0 {printf("0");return 0;}for(int i=1;i<=n;i++)scanf("%d",&qwq[i]);init();//预处理,需要用滚动数组优化时间 dp[0][1][1]=dp[0][0][0]=0;//当没有从最后一个位置开始的时候,第一个时段答案肯定为0 dp1();ans=max(dp[t][m][0],dp[t][m][1]);//在最后时段取与不取之间找个最大值 init();dp[0][1][0]=dp[0][1][1]=qwq[1];//当从最后一个时段开始的时候 dp1();//进行两遍递推 ans=max(ans,dp[t][m][1]);printf("%d",ans); }
转载于:https://www.cnblogs.com/Loi-dfkdsmbd/articles/7717383.html
【codevs2497】 Acting Cute相关推荐
- 【Tools】Visual Studio 2019搭建Qt开发环境
00. 目录 文章目录 00. 目录 01. 概述 02. Visual Studio 2019安装 03. Qt6安装 04. qt-vsaddin插件下载 05. qt-vsaddin插件安装 0 ...
- 【英语学习】【WOTD】emote 释义/词源/示例
emote v. [ih-MOHT] 激动地表达感情 Definition : to give expression to emotion especially in acting :表达情感,尤其是 ...
- 【摘】UI设计中对比色颜色的选取
(仅摘录部分内容,如对全文有兴趣,请访问原文) 顾名思义,GUIs(Graphical User Interfaces,图形化用户界面)从视觉上展现了它们的特性与功能.人机交互在很大程度上是依赖于可视 ...
- 【Django】模板
本文为 Django 学习笔记,讲解模板的使用. 运行环境 Windows 10 Pycharm Community Edition 2020.1.3 Django 3.0.8 所有的代码见[Djan ...
- 转:【PAMI2018】ASTER_An Attentional Scene Text Recognizer with Flexible Rectification
XiangBai--[PAMI2018]ASTER_An Attentional Scene Text Recognizer with Flexible Rectification 作者和论文 论文 ...
- 【转】Principles of User Interface Design
[原文]:[url=http://bokardo.com/principles-of-user-interface-design/]http://bokardo.com/principles-of-u ...
- 【Day1】一小时入门 python 基础,从安装到入门
文章目录 python 安装 安装python 安装 pycharm python基础 输出 注释 变量 输入 类型转换 运算符 自增 字符串相关操作 比较运算符 逻辑运算符 条件控制 while循环 ...
- ParlAI基本使用【文档翻译】
Intro to ParlAI What is ParlAI? ParlAI 是一个基于 python 的平台,用于启用对话 AI 研究. 其目标是为研究人员提供: 用于共享.训练和测试对话模型的统一 ...
- Android开源框架【集合】
Android开源框架[集合] 图解一览 Square& JakeWharton 框架名称 功能描述 Picasso 一个强大的图片下载与缓存的库 OkHttp Square出品,一个Http ...
最新文章
- 残差复合正态分布的重要性
- 算法----删除链表中的节点(Java)
- 怎么关闭win10的自动更新
- 068_xhtml语法
- java翻译smali,请各位好人帮我翻译Java成smali(没有false)
- 旧金山站线上峰会24h倒数
- 函的红头文件格式制作_Excel实现批量制作年会邀请函,这个方法,你一定不能错过...
- php 服务器 mac地址吗,php获取服务器端mac和客户端mac的地址
- Hadoop开发环境
- 计算机简单进制转换题目,计算机数制转换题!(1011011)2 =( )10=( )16 =( )8(110111101)2 =( )10=(...
- dell台式计算机恢复出厂设置,戴尔电脑如何恢复出厂设置
- 有哪些好用的智能写作工具?
- 卡巴斯基实验室:2019Q1 IT威胁发展趋势统计报告
- 陪你云sdk用户指南
- python布尔类型(bool)
- 【C语言进阶】字符函数和字符串函数
- 评职称自费出书需要多长时间
- IVM import vector machine
- 网站域名被拦截,网站被流量劫持,该怎么做?
- centos7 gam_server进程导致CPU使用率100%,系统负载很高
热门文章
- mysql查询出过去一个月_Mysql查询今天、昨天、7天、近30天、本月、上一月 数据...
- html5中折叠面板,Ant Design中折叠面板Collapse
- sql java驱动程序_Microsoft SQL Server JDBC 驱动程序支持矩阵
- CSDN挑战编程——《金色十月线上编程比赛第一题:小女孩数数》
- leetcode 77. 组合 思考分析
- CNN基本步骤以及经典卷积(LeNet、AlexNet、VGGNet、InceptionNet 和 ResNet)网络讲解以及tensorflow代码实现
- HTH的完整形式是什么?
- python集合应用场景_python 集合的应用
- 【转载】ACM中矩阵乘法的应用
- 【高性能定时器】时间堆(最小堆)