【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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/391017.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

渐进式web应用程序_渐进式Web应用程序与加速的移动页面:有什么区别,哪种最适合您?

渐进式web应用程序Do you understand what PWAs and AMPs are, and which might be better for you? Lets have a look and find out.您了解什么是PWA和AMP&#xff0c;哪一种可能更适合您&#xff1f; 让我们看看并找出答案。 So many people own smartphones these days. T…

高光谱图像分类_高光谱图像分析-分类

高光谱图像分类初学者指南 (Beginner’s Guide) This article provides detailed implementation of different classification algorithms on Hyperspectral Images(HSI).本文提供了在高光谱图像(HSI)上不同分类算法的详细实现。 目录 (Table of Contents) Introduction to H…

在Java里如何给一个日期增加一天

在Java里如何给一个日期增加一天 我正在使用如下格式的日期: yyyy-mm-dd. 我怎么样可以给一个日期增加一天&#xff1f; 回答一 这样应该可以解决问题 String dt "2008-01-01"; // Start date SimpleDateFormat sdf new SimpleDateFormat("yyyy-MM-dd&q…

CentOS 7安装和部署Docker

版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 https://blog.csdn.net/u010046908/article/details/79553227 Docker 要求 CentOS 系统的内核版本高于 3.10 &#xff0c;查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。通过 uname …

JavaScript字符串方法终极指南-拆分

The split() method separates an original string into an array of substrings, based on a separator string that you pass as input. The original string is not altered by split().split()方法根据您作为输入传递的separator字符串&#xff0c;将原始字符串分成子字符串…

机器人的动力学和动力学联系_通过机器学习了解幸福动力学(第2部分)

机器人的动力学和动力学联系Happiness is something we all aspire to, yet its key factors are still unclear.幸福是我们所有人都渴望的东西&#xff0c;但其关键因素仍不清楚。 Some would argue that wealth is the most important condition as it determines one’s li…

在Java里怎将字节数转换为我们可以读懂的格式?

问题&#xff1a;在Java里怎将字节数转换为我们可以读懂的格式&#xff1f; 在Java里怎将字节数转换为我们可以读懂的格式 像1024应该变成"1 Kb"&#xff0c;而1024*1024应该变成"1 Mb". 我很讨厌为每个项目都写一个工具方法。在Apache Commons有没有这…

ubuntu 16.04 安装mysql

2019独角兽企业重金招聘Python工程师标准>>> 1) 安装 sudo apt-get install mysql-server apt-get isntall mysql-client apt-get install libmysqlclient-dev 2) 验证 sudo netstat -tap | grep mysql 如果有 就代表已经安装成功。 3&#xff09;开启远程访问 1、 …

shell:多个文件按行合并

paste file1 file2 file3 > file4 file1内容为&#xff1a; 1 2 3 file2内容为&#xff1a; a b c file3内容为&#xff1a; read write add file4内容为&#xff1a; 1 a read 2 b write 3 c add 转载于:https://www.cnblogs.com/seaBiscuit0922/p/7728444.html

form子句语法错误_用示例语法解释SQL的子句

form子句语法错误HAVING gives the DBA or SQL-using programmer a way to filter the data aggregated by the GROUP BY clause so that the user gets a limited set of records to view.HAVING为DBA或使用SQL的程序员提供了一种过滤由GROUP BY子句聚合的数据的方法&#xff…

leetcode 1310. 子数组异或查询(位运算)

有一个正整数数组 arr&#xff0c;现给你一个对应的查询数组 queries&#xff0c;其中 queries[i] [Li, Ri]。 对于每个查询 i&#xff0c;请你计算从 Li 到 Ri 的 XOR 值&#xff08;即 arr[Li] xor arr[Li1] xor … xor arr[Ri]&#xff09;作为本次查询的结果。 并返回一…

大样品随机双盲测试_训练和测试样品生成

大样品随机双盲测试This post aims to explore a step-by-step approach to create a K-Nearest Neighbors Algorithm without the help of any third-party library. In practice, this Algorithm should be useful enough for us to classify our data whenever we have alre…

vue组件命名指南,不为取名而纠结

前言 自古中国取名文化博大进深,往往取一个好的名字而绞尽脑汁.那么一个好名字能够带来什么呢? 名字的内涵必需和使用者固有的本性相配套不和名人重名、不易重名、创意新颖&#xff0c;真正体现通过名字以区分人的作用响亮上口读起来流畅好听&#xff0c;协音美好&#xff0c;…

JavaScript 基础,登录验证

<script></script>的三种用法&#xff1a;放在<body>中放在<head>中放在外部JS文件中三种输出数据的方式&#xff1a;使用 document.write() 方法将内容写到 HTML 文档中。使用 window.alert() 弹出警告框。使用 innerHTML 写入到 HTML 元素。使用 &qu…

使用final类的作用是什么?

问题&#xff1a;使用final类的作用是什么&#xff1f; 我在看一本关于Java的书&#xff0c;它里面说你可以定义一个类为final。我搞不明白有什么地方会被用到这样。 我是一个编程萌新。我想知道程序员在他们的程序里面都是怎么用fianl类的。如果知道他们是什么时候使用的话&…

photoshop cc_如何使用Photoshop CC将图片变成卡通

photoshop ccA fun photo effect is to make a photo look like a cartoon. In this tutorial you will learn how to use Photoshop CC to make a photo look like a cartoon drawing.有趣的照片效果是使照片看起来像卡通漫画。 在本教程中&#xff0c;您将学习如何使用Photos…

从数据角度探索在新加坡的非法毒品

All things are poisons, for there is nothing without poisonous qualities. It is only the dose which makes a thing poison.” ― Paracelsus万物都是毒药&#xff0c;因为没有毒药就没有什么。 只是使事物中毒的剂量。” ― 寄生虫 执行摘要(又名TL&#xff1b; DR) (Ex…

Android 自定义View实现QQ运动积分抽奖转盘

因为偶尔关注QQ运动&#xff0c; 看到QQ运动的积分抽奖界面比较有意思&#xff0c;所以就尝试用自定义View实现了下&#xff0c;原本想通过开发者选项查看下界面的一些信息&#xff0c;后来发现积分抽奖界面是在WebView中展示的&#xff0c;应该是在H5页面中用js代码实现的&…

瑞立视:厚积薄发且具有“工匠精神”的中国品牌

一家成立两年的公司&#xff1a;是如何在VR行业趋于稳定的情况下首次融资就获得如此大额的金额呢&#xff1f; 2017年VR行业内宣布融资的公司寥寥无几&#xff0c;无论是投资人还是消费者对这个 “宠儿”都开始纷纷投以怀疑的目光。但就在2017年7月27日&#xff0c;深圳市一家…

苹果系统使用svg 动画_为什么要使用SVG图像:如何为SVG设置动画并使其快速闪电化

苹果系统使用svg 动画我们为什么要使用SVG&#xff1f; (Why Are We Using SVG?) The web development sector is growing at a rapid pace, and SVG (scalable vector graphics) images are becoming more popular. As vector images, SVGs are composed of mathematical equ…