<题目链接>

题目大意:

给定一个长度为$n$的序列,现在最多能够改变其中的一个数字,使其变成任意值。问你这个序列的最长严格上升子段的长度是多少。

#include <bits/stdc++.h>
using namespace std;
const int N = 1e5+;
int a[N],dp2[N],dp1[N]; int main(){
int n,ans;cin>>n;
for (int i=;i<=n;++i)cin>>a[i];
a[n+]=1e9+;
for (int i=;i<=n;++i) {
if (a[i]>a[i-])dp1[i]=dp1[i-]+;
else dp1[i]=;
ans=max(ans,dp1[i]);
//得到不改变数字的最长上升子段
}if(ans<n)ans++; ///因为至少能够改变最长上升子段首、尾的数字,使得它长度再增加1
for (int i=n;i>=;--i){
if (a[i+]>a[i]) dp2[i]=dp2[i+]+;
else dp2[i]=; //处理一下后缀的最长上升子序列
if (a[i+]-a[i-]>) ans=max(ans,dp1[i-]+dp2[i+]+); //如果第i个能够变成a[i-1]~a[i+1]之间的某个数字,它就能将这两段拼接起来
}
cout<<ans<<endl;
}

Codeforces 446A. DZY Loves Sequences (线性DP)的更多相关文章

  1. CodeForces - 446A DZY Loves Sequences(dp)

    题意:给定一个序列a,求最长的连续子序列b的长度,在至多修改b内一个数字(可修改为任何数字)的条件下,使得b严格递增. 分析: 1.因为至多修改一个数字,假设修改a[i], 2.若能使a[i] < ...

  2. codeforces 446A DZY Loves Sequences

    vjudge 上题目链接:codeforces 446A 大意是说最多可以修改数列中的一个数,求最长严格递增的连续子序列长度. 其实就是个 dp 的思想,想好思路后交上去没想到一直 wa 在第二个测试 ...

  3. CodeForces 446A DZY Loves Sequences (DP+暴力)

    题意:给定一个序列,让你找出一个最长的序列,使得最多改其中的一个数,使其变成严格上升序列. 析:f[i] 表示以 i 结尾的最长上升长度,g[i] 表示以 i 为开始的最长上升长度,这两个很容易就求得 ...

  4. codeforces#FF DIV2C题DZY Loves Sequences(DP)

    题目地址:http://codeforces.com/contest/447/problem/C C. DZY Loves Sequences time limit per test 1 second ...

  5. Codeforces Round #FF 446A DZY Loves Sequences

    预处理出每一个数字能够向后延伸多少,然后尝试将两段拼起来. C. DZY Loves Sequences time limit per test 1 second memory limit per t ...

  6. Codeforces 447C - DZY Loves Sequences

    447C - DZY Loves Sequences 思路:dp 代码: #include<bits/stdc++.h> using namespace std; #define ll l ...

  7. codeforces 447C. DZY Loves Sequences 解题报告(446A)

    题目链接:http://codeforces.com/problemset/problem/447/C 题目意思:给出 一个 包含 n 个数的序列你,从中需要找出这个序列的最长子串,满足在里面只修改其 ...

  8. Codeforces 447 C DZY Loves Sequences【DP】

    题意:给出一列数,在这个序列里面找到一个连续的严格上升的子串,现在可以任意修改序列里面的一个数,问得到的子串最长是多少 看的题解,自己没有想出来 假设修改的是a[i],那么有三种情况, 1.a[i]& ...

  9. CodeForces 447C DZY Loves Sequences DP

    题目:click here 题意:求给定序列更改其中一个元素后的最长连续上升子序列的长度 分析:最长的连续子序列有2种,一种是严格上升(没有更改元素)的长度加1,一种是两段严格上升的加起来. #inc ...

随机推荐

  1. Maven 学习总结 (五) 之 持续集成、构建web应用

    持续集成的作用.过程和优势 简单说,持续集成就是快速且高频率地自动构建项目的所有源码,并为项目成员提供丰富的反馈信息. 快速:集成的速度要尽可能地快,开发人员不希望自己的代码提交半天之后才得到反馈. ...

  2. [Reinforcement Learning] Value Function Approximation

    为什么需要值函数近似? 之前我们提到过各种计算值函数的方法,比如对于 MDP 已知的问题可以使用 Bellman 期望方程求得值函数:对于 MDP 未知的情况,可以通过 MC 以及 TD 方法来获得值 ...

  3. #1 macos和windows下对多Python环境配置的记录

    为啥会发现环节配置的问题 因为scrapy的setting前期走弯路的时候,碰到了修改了Windows下的Python中的scrapy的默认setting,但是我电脑上还有anaconda,而且我是使 ...

  4. python selenium 最简单示例

    使用 pip 安装  selenium 下载 chromedriver,添加在PATH中 # -*- coding: utf-8 -*- from selenium import webdriver ...

  5. jquery的datatables第二次加载报错

    "destroy":true, "scrollX": true, "ordering": false, "sScrollXInne ...

  6. js下载后台返回的docx(返回格式:文档流)文件

    原文地址: https://www.jianshu.com/p/a81c68c15fbd PS需要指定responseType类型,不然文件内容会乱码哦 咦?文件名乱码?需要手动设置文件名哦↓ 呀,文 ...

  7. LaTeX多图合并代码示例(subfigure)

    \usepakage{subfig} \begin{figure*}[!htb] \centering \subfigure[Derm101 data distribution]{\includegr ...

  8. VS Code保存使用项目Eslint规则格式化代码

    One.文件-首选项-设置-选择项目                  Two.打开右上角JSON设置            Three. 插入以下代码 { "eslint.options& ...

  9. linux 查看ip地址

    1.先要打开linux服务器,然后在linux桌面的空白处点击右键 2.在弹出的选项里,点击[打开终端] 3.打开linux服务器的命令终端后,输入查询linux的ip地址的命令:ifconfig - ...

  10. Mysql 时间差(年、月、天、时、分、秒)

    SELECT TIME_TO_SEC(TIMEDIFF('2018-09-30 19:38:45', '2018-08-23 10:13:01')) AS DIFF_SECOND1, -- 秒 UNI ...