这个题个人认为是我目前所做的最难的区间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相关推荐

  1. 【Tools】Visual Studio 2019搭建Qt开发环境

    00. 目录 文章目录 00. 目录 01. 概述 02. Visual Studio 2019安装 03. Qt6安装 04. qt-vsaddin插件下载 05. qt-vsaddin插件安装 0 ...

  2. 【英语学习】【WOTD】emote 释义/词源/示例

    emote v. [ih-MOHT] 激动地表达感情 Definition : to give expression to emotion especially in acting :表达情感,尤其是 ...

  3. 【摘】UI设计中对比色颜色的选取

    (仅摘录部分内容,如对全文有兴趣,请访问原文) 顾名思义,GUIs(Graphical User Interfaces,图形化用户界面)从视觉上展现了它们的特性与功能.人机交互在很大程度上是依赖于可视 ...

  4. 【Django】模板

    本文为 Django 学习笔记,讲解模板的使用. 运行环境 Windows 10 Pycharm Community Edition 2020.1.3 Django 3.0.8 所有的代码见[Djan ...

  5. 转:【PAMI2018】ASTER_An Attentional Scene Text Recognizer with Flexible Rectification

    XiangBai--[PAMI2018]ASTER_An Attentional Scene Text Recognizer with Flexible Rectification 作者和论文 论文 ...

  6. 【转】Principles of User Interface Design

    [原文]:[url=http://bokardo.com/principles-of-user-interface-design/]http://bokardo.com/principles-of-u ...

  7. 【Day1】一小时入门 python 基础,从安装到入门

    文章目录 python 安装 安装python 安装 pycharm python基础 输出 注释 变量 输入 类型转换 运算符 自增 字符串相关操作 比较运算符 逻辑运算符 条件控制 while循环 ...

  8. ParlAI基本使用【文档翻译】

    Intro to ParlAI What is ParlAI? ParlAI 是一个基于 python 的平台,用于启用对话 AI 研究. 其目标是为研究人员提供: 用于共享.训练和测试对话模型的统一 ...

  9. Android开源框架【集合】

    Android开源框架[集合] 图解一览 Square& JakeWharton 框架名称 功能描述 Picasso 一个强大的图片下载与缓存的库 OkHttp Square出品,一个Http ...

最新文章

  1. 残差复合正态分布的重要性
  2. 算法----删除链表中的节点(Java)
  3. 怎么关闭win10的自动更新
  4. 068_xhtml语法
  5. java翻译smali,请各位好人帮我翻译Java成smali(没有false)
  6. 旧金山站线上峰会24h倒数
  7. 函的红头文件格式制作_Excel实现批量制作年会邀请函,这个方法,你一定不能错过...
  8. php 服务器 mac地址吗,php获取服务器端mac和客户端mac的地址
  9. Hadoop开发环境
  10. 计算机简单进制转换题目,计算机数制转换题!(1011011)2 =( )10=( )16 =( )8(110111101)2 =( )10=(...
  11. dell台式计算机恢复出厂设置,戴尔电脑如何恢复出厂设置
  12. 有哪些好用的智能写作工具?
  13. 卡巴斯基实验室:2019Q1 IT威胁发展趋势统计报告
  14. 陪你云sdk用户指南
  15. python布尔类型(bool)
  16. 【C语言进阶】字符函数和字符串函数
  17. 评职称自费出书需要多长时间
  18. IVM import vector machine
  19. 网站域名被拦截,网站被流量劫持,该怎么做?
  20. centos7 gam_server进程导致CPU使用率100%,系统负载很高

热门文章

  1. mysql查询出过去一个月_Mysql查询今天、昨天、7天、近30天、本月、上一月 数据...
  2. html5中折叠面板,Ant Design中折叠面板Collapse
  3. sql java驱动程序_Microsoft SQL Server JDBC 驱动程序支持矩阵
  4. CSDN挑战编程——《金色十月线上编程比赛第一题:小女孩数数》
  5. leetcode 77. 组合 思考分析
  6. CNN基本步骤以及经典卷积(LeNet、AlexNet、VGGNet、InceptionNet 和 ResNet)网络讲解以及tensorflow代码实现
  7. HTH的完整形式是什么?
  8. python集合应用场景_python 集合的应用
  9. 【转载】ACM中矩阵乘法的应用
  10. 【高性能定时器】时间堆(最小堆)