Codeforces Round #FF (Div. 2)C. DZY Loves Sequences
来源:互联网 发布:js object转array 编辑:程序博客网 时间:2024/06/05 09:50
DZY has a sequence a, consisting of n integers.
We'll call a sequence ai, ai + 1, ..., aj(1 ≤ i ≤ j ≤ n) a subsegment of the sequencea. The value (j - i + 1) denotes the length of the subsegment.
Your task is to find the longest subsegment of a, such that it is possible to change at most one number (change one number to any integer you want) from the subsegment to make the subsegment strictly increasing.
You only need to output the length of the subsegment you find.
The first line contains integer n (1 ≤ n ≤ 105). The next line containsn integersa1, a2, ..., an (1 ≤ ai ≤ 109).
In a single line print the answer to the problem — the maximum length of the required subsegment.
67 2 3 1 5 6
5
You can choose subsegment a2, a3, a4, a5, a6 and change its 3rd element (that is a4) to 4.
考察最长连续上升子序列的一道题,dp经典题的变形题
dp[i][0]表示以i结尾的最长连续子列,dp[i][1]表示以i开始的最长子列
最后枚举i的改变,注意i的改变有三种情况,1使左半部分取最大值,2使右半部分取最大值,3使左右连续起来取最大值
</pre><pre class="cpp" name="code">#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int maxn=100000+10;int dp[maxn][2];int a[maxn];int main(){int n;while(scanf("%d",&n)!=EOF){for(int i=1;i<=n;i++)scanf("%d",&a[i]);dp[1][0]=1;for(int i=2;i<=n;i++){if(a[i]>a[i-1]) dp[i][0]=dp[i-1][0]+1;elsedp[i][0]=1;}dp[n][1]=1;for(int i=n-1;i>=1;i--){if(a[i]<a[i+1])dp[i][1]=dp[i+1][1]+1;elsedp[i][1]=1;}int ans=1;int dd;for(int i=2;i<=n-1;i++){if((a[i+1]-a[i-1])>1){dd=dp[i-1][0]+dp[i+1][1]+1; ans=max(ans,dd);}else{ans=max(ans,dp[i][0]+1);}}for(int i=1;i<=n-1;i++){ans=max(ans,dp[i+1][1]+1);}for(int i=2;i<=n;i++)ans=max(ans,dp[i-1][0]+1);//for(int i=1;i<=n;i++)//cout<<dp[i][1]<<endl<<dp[i][0]<<endl;cout<<ans<<endl;}return 0;}
- Codeforces Round #FF (Div. 2):C. DZY Loves Sequences
- Codeforces Round #FF (Div. 2) Problem C DZY Loves Sequences
- Codeforces Round #FF (Div. 2)C - DZY Loves Sequences
- Codeforces Round #FF (Div. 2)-C. DZY Loves Sequences
- Codeforces Round #FF (Div. 2)C. DZY Loves Sequences
- Codeforces Round #FF (Div. 2) C. DZY Loves Sequences
- Codeforces Round #FF (Div. 2) C. DZY Loves Sequences
- Codeforces Round #FF (Div. 2) C DZY Loves Sequences
- Codeforces Round #FF (Div. 2)C. DZY Loves Sequences
- Codeforces Round #FF (Div. 2)C. DZY Loves Sequences
- Codeforces Round #FF (Div. 2)-C. DZY Loves Sequences
- Codeforces Round #FF (Div. 2) C. DZY Loves Sequences
- Codeforces Round #FF (Div. 二):C. DZY Loves Sequences
- Codeforces Round #FF (Div. 2) C - DZY Loves Sequences (DP)
- Codeforces Round #FF (Div. 2/C)/Codeforces446A_DZY Loves Sequences(DP)
- Codeforces Round #FF (Div. 2)446A - DZY Loves Sequences(最长上升子序列变形)
- Codeforces Round #FF (Div. 1) C - DZY Loves Fibonacci Numbers
- Codeforces Round #FF (Div. 1) C. DZY Loves Fibonacci Numbers
- Android自定义progressDialog实现载入动画
- 本博客已经迁移到 http://nark.cc
- [LeetCode] Longest Consecutive Sequence
- 东软实训(十二)
- 【Java项目实战】配置环境变量:classpath,path,java_home
- Codeforces Round #FF (Div. 2)C. DZY Loves Sequences
- 计算整数x的二进制表示中1的个数
- C++ Primer:第一日学习
- 自定义控件
- java反射
- hdu 4405 Aeroplane chess(概率dp)
- zoj 1047 (bfs)
- Photoshop软件界面
- Eclipse MAT安装