Codeforces 446A —— DZY Loves Sequences(DP)
来源:互联网 发布:mongodb与mysql区别 编辑:程序博客网 时间:2024/06/02 19:42
题目:DZY Loves Sequences
题意:给定一个序列A,要在这个序列A里面找到一个连续子串,使得这个子串可以仅将其中某个元素修改为任意值然后得到一个严格单调递增的序列,问这样的子串最长是多少。
假设修改了某个值A[i]可以得到一个严格单调递增的序列,那么有三种情况:
1、令A[i]比A[i-1]大,然后求出从A[i-1]向左延伸的最长长度;
2、令A[i]比A[i+1]小,然后求出A[i+1]向右延伸的最长长度;
3、同时使得A[i-1]<A[i]<A[i+1],这个的前提条件是A[i+1]-A[i-1]>1,然后求出左右的延伸的最长长度;
其中求1和2是在3的条件不成立的情况下,3成立的话1和2不会比3优;
最后三种情况求最大值,然后加1(A[i]本身还没算进去),那么就是修改A[i]可以达到的最大值,然后枚举一遍A[i]求最大值即可。
关于左右延伸的长度,可以先通过预处理前后各扫一遍得到。
总复杂度O(N)。
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int N = 100001;int n, a[N];int f[N], g[N], ans;//f代表向左边延伸的长度,g代表向右延伸的长度。int main(){while(~scanf("%d", &n)){for(int i=0; i<n; i++){scanf("%d", a+i);if(i){if(a[i]>a[i-1])f[i]=f[i-1]+1;elsef[i] = 1;}elsef[i] = 1;}if(n==1){puts("1");continue;}g[n-1] = 1;for(int i=n-2; i>=0; i--){if(f[i]<f[i+1])g[i] = g[i+1]+1;elseg[i] = 1;}ans = max(g[1], f[n-2])+1;for(int i=1; i<n-1; i++){if(a[i+1]-a[i-1]>1){ans = max(ans, f[i-1]+g[i+1]+1);}else{ ans = max(ans, f[i-1]+1); ans = max(ans, g[i+1]+1);}}printf("%d\n", ans);}return 0;}
0 0
- Codeforces 446A —— DZY Loves Sequences(DP)
- Codeforces 446A DZY Loves Sequences【dp】
- CodeForces 446A DZY Loves Sequences(DP)
- Codeforces 446A DZY Loves Sequences
- CodeForces 446A DZY Loves Sequences
- codeforces 446A DZY Loves Sequences
- CodeForces 446-A.DZY Loves Sequences
- codeforces-446A-DZY Loves Sequences
- CodeForces 446A DZY Loves Sequences
- codeforces#FF DIV2C题DZY Loves Sequences(DP)
- codeforces#FF DIV2C题DZY Loves Sequences(DP)
- Codeforces Round #FF 446A DZY Loves Sequences
- Codeforces Round #FF (Div. 2)446A - DZY Loves Sequences(最长上升子序列变形)
- CF 446A DZY Loves Sequences
- CodeForces 447C DZY Loves Sequences (dp 子序列)
- DZY Loves Sequences 预处理 dp
- Codeforces Round #FF (Div. 2) C - DZY Loves Sequences (DP)
- codeforces#FF(div2) DZY Loves Sequences
- 弱校ACM奋斗史
- 【Linux学习】Linux文件系统4—Linux文件硬链接与软连接
- openstack add interface
- JBoss 的端口设置修改
- 高贵
- Codeforces 446A —— DZY Loves Sequences(DP)
- 被遗忘的黑莓,你还活得好么?
- 黑马程序员 类的方法中参数的传递
- day day up--Java设计模式之单例模式
- Ubuntu Kylin 14.04 LTS使用体验
- Codeforces Round #255(Div. 2)
- 5.1.5 Binary Tree Level Order Traversal II
- 期末总结
- iOS 获取 当前设备 可用内存 及当前 应用 所占内存 (转)