博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CodeForces 447C DZY Loves Sequences DP
阅读量:6676 次
发布时间:2019-06-25

本文共 1075 字,大约阅读时间需要 3 分钟。

题目:

题意:求给定序列更改其中一个元素后的最长连续上升子序列的长度

分析:最长的连续子序列有2种,一种是严格上升(没有更改元素)的长度加1,一种是两段严格上升的加起来。

 

1 #include 
2 using namespace std; 3 #define F first 4 #define S second 5 #define pb push_back 6 #define power(a) ((a)*(a)) 7 #define ENTER printf("\n"); 8 typedef unsigned long long ll; 9 const int INF = 0x3f3f3f3f;10 const double EPS = 1e-8;11 const int M = 1e5+5;12 13 int n, ret;14 int a[M]; 15 int dps[M]; // dps[i]保存以i开头的最长连续上升子序列16 int dpe[M]; // dpe[i]保存以i结束的最长连续上升子序列17 void solve() {18 ret = dpe[0] = dps[n-1] = 1;19 for( int i=1; i
a[i-1] ) dpe[i] = dpe[i-1] + 1;21 else dpe[i] = 1;22 for( int i=n-2; i>=0; i-- )23 if( a[i] < a[i+1] ) dps[i] = dps[i+1] + 1;24 else dps[i] = 1;25 for( int i=0; i
= 2 ) ret = max( ret, dps[i+1]+dpe[i-1]+1 );27 else ret = max( ret, max( dps[i+1]+1, dpe[i-1]+1 ) );28 printf("%d\n", ret);29 }30 31 int main() {32 while( ~scanf("%d", &n ) ) {33 for( int i=0; i

 

转载于:https://www.cnblogs.com/TaoTaoCome/p/4744539.html

你可能感兴趣的文章
备忘录模式
查看>>
git 如何更改某个提交内容/如何把当前改动追加到某次commit上? git rebase
查看>>
eclipse里将java工程改web工程
查看>>
amazon redshift 分析型数据库特点——本质还是列存储
查看>>
C#编程(二十四)----------修饰符
查看>>
[内核]procfs和sysfs
查看>>
R语言中的数据处理包dplyr、tidyr笔记
查看>>
CSS3去除手机浏览器button点击出现的高亮框
查看>>
HBase复制
查看>>
创建cocos2d-x+lua项目
查看>>
基于cancel的不全然恢复
查看>>
CentOS Linux release 7.3源码安装zabbix
查看>>
(016)给定一个有序数组(递增),敲代码构建一棵具有最小高度的二叉树(keep it up)...
查看>>
【零基础学习iOS开发】【01-前言】02-准备
查看>>
matlab之图像处理(2)
查看>>
javascript JSON
查看>>
Codeforces 839D Winter is here【数学:容斥原理】
查看>>
在js中怎样获得checkbox里选中的多个值?
查看>>
基于AllegroGraph实现Protege设计知识库模型的存储步骤
查看>>
线程中释放锁的方式
查看>>