codeforces 446A DZY Loves Sequences
vjudge 上题目链接:codeforces 446A
大意是说最多可以修改数列中的一个数,求最长严格递增的连续子序列长度。
其实就是个 dp 的思想,想好思路后交上去没想到一直 wa 在第二个测试数据里,丧心病狂啊 T.T,后来才知道原来是分类讨论时没考虑全,而且下标也写拙了。
情况有三:
(1) 不作任何修改,直接遍历一遍求出的 in 数组和 de 数组即可。(其实这种情况不会优于(3),可以不用考虑)
(2) 修改的元素为最长递增子序列的中间结点,把左边的 in[i - 1] 加上右边的 de[i + 1] 再 +1 即原本这个元素。
(3) 修改的元素为最长递增子序列的首尾结点,所以这时候的值就是 in[i - 1] +1 或 de[i + 1] +1。(就是遗漏了这种情况啊,md)
然后,下标也要很注意,i 须取到 1 和 n;还要特判一下 n == 2 的情况,否则还是悲剧的 wa(T.T)。。。
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int inf = 0x3fffffff;
const int N = ; int c[N], in[N], de[N]; void output(int *c, int l, int r, const char *s) {
puts("");
puts(s);
for(int i = l; i <= r; ++i)
printf("%d ",c[i]);
puts("\n");
} int main() {
int n;
while(~scanf("%d",&n)) {
for(int i = ; i <= n; ++i)
scanf("%d", c + i); if(n <= ) {
printf("%d\n",n);
continue;
} in[] = ;
for(int i = ; i <= n; ++i) {
if(c[i - ] < c[i]) in[i] = in[i - ] + ;
else in[i] = ;
} de[n] = ;
for(int i = n - ; i >= ; --i) {
if(c[i + ] > c[i]) de[i] = de[i + ] + ;
else de[i] = ;
} in[n + ] = de[n + ] = ; // 如上所说,ans 可以直接初始化为 0,不需要第 1 种情况
int ans = max(*max_element(in + , in + n + ), *max_element(de + , de + n + ));
// 下标很重要!!!
for(int i = ; i <= n; ++i)
if(c[i - ] <= c[i + ] - ) ans = max(ans, in[i - ] + de[i + ] + );
else ans = max(ans, max(in[i - ], de[i + ]) + );
printf("%d\n",ans);
}
return ;
}
codeforces 446A DZY Loves Sequences的更多相关文章
- Codeforces 446A. DZY Loves Sequences (线性DP)
<题目链接> 题目大意: 给定一个长度为$n$的序列,现在最多能够改变其中的一个数字,使其变成任意值.问你这个序列的最长严格上升子段的长度是多少. #include <bits/st ...
- CodeForces 446A DZY Loves Sequences (DP+暴力)
题意:给定一个序列,让你找出一个最长的序列,使得最多改其中的一个数,使其变成严格上升序列. 析:f[i] 表示以 i 结尾的最长上升长度,g[i] 表示以 i 为开始的最长上升长度,这两个很容易就求得 ...
- CodeForces - 446A DZY Loves Sequences(dp)
题意:给定一个序列a,求最长的连续子序列b的长度,在至多修改b内一个数字(可修改为任何数字)的条件下,使得b严格递增. 分析: 1.因为至多修改一个数字,假设修改a[i], 2.若能使a[i] < ...
- Codeforces Round #FF 446A DZY Loves Sequences
预处理出每一个数字能够向后延伸多少,然后尝试将两段拼起来. C. DZY Loves Sequences time limit per test 1 second memory limit per t ...
- Codeforces 447C - DZY Loves Sequences
447C - DZY Loves Sequences 思路:dp 代码: #include<bits/stdc++.h> using namespace std; #define ll l ...
- codeforces 447C. DZY Loves Sequences 解题报告(446A)
题目链接:http://codeforces.com/problemset/problem/447/C 题目意思:给出 一个 包含 n 个数的序列你,从中需要找出这个序列的最长子串,满足在里面只修改其 ...
- codeforces C. DZY Loves Sequences
http://codeforces.com/contest/447/problem/C 题意:给你n个数的序列,然后让你改变其中的一个数,求得最长上升连续序列的长度值. 思路:先从左边开始求出连续递增 ...
- CodeForces 447C DZY Loves Sequences DP
题目:click here 题意:求给定序列更改其中一个元素后的最长连续上升子序列的长度 分析:最长的连续子序列有2种,一种是严格上升(没有更改元素)的长度加1,一种是两段严格上升的加起来. #inc ...
- codeforces#FF DIV2C题DZY Loves Sequences(DP)
题目地址:http://codeforces.com/contest/447/problem/C C. DZY Loves Sequences time limit per test 1 second ...
随机推荐
- Golang之sdl2学习之路(零) -- 环境工具准备
学习Golang有一段时间了,从毫无头绪到四处乱撞,再到如今静下心来安心学习sdl2也有小半年了. 今晚重构之前的学习代码,发现如果不写该文,可能会在以后回顾这段时间写的代码上花费时间,故以此文做一点 ...
- 盒模型--padding
突然增加padding会使盒子变大,所以要按实际情况做调整. 没有写padding的时候: <style>div{ background:gray;}</style></ ...
- github 或者gitlab 设置添加SSH, 避免每次提交重复输入用户名
克隆项目二种方式: 1. 使用https url克隆, 复制https url 然后到 git clone https-url 2.使用 SSH url 克隆却需要在克隆之前先配置和添加好 SSH ...
- MVC项目实践,在三层架构下实现SportsStore,从类图看三层架构
在"MVC项目实践,在三层架构下实现SportsStore-02,DbSession层.BLL层"一文的评论中,博友浪花一朵朵建议用类图来理解本项目的三层架构.于是就有了本篇: I ...
- 检测浏览器是否支持cookie方法
cookie 摘自: http://www.cnblogs.com/fish-li/archive/2011/07/03/2096903.html Cookie是什么? Cookie 是一小段文本信息 ...
- WCF服务接口多,客户端在引用时出错!报WCF The maximum nametable character count quota (16384) has been exceeded while reading XML data错误
WCF服务接口多,客户端在引用时出错!报WCF The maximum nametable character count quota (16384) has been exceeded while ...
- 2Sigma OA prepare: Longest Chain
DP use HashMap: 根据string的长度sort,然后维护每个string的longest chain,default为1,如果删除某个char生成的string能提供更长的chain, ...
- Linux下执行的java命令重定向到文件中的方法
在Linux下通常会执行如:java -version 的命令, 但是,命令只是打印到了屏幕上不能重定向到文件中或标准输出流中. 此时需要将错误输出流重定向到标准输出流中就可以得到了. 比如:java ...
- android cocos2d-x for Android安装和学习笔记(请用adt-bundle21.1或以上导入)
引用:http://weimingtom.iteye.com/blog/1483566 (20121108)注意:这篇文章用cdt编译ndk工程的内容已过时(现在可以用adt-bundle,避免配置繁 ...
- jquery-mobile之loading加载自定义
用jquery-mobile的时候,我们发现文档中loading是直接通过标签属性进行渲染,封装的函数必须通过点击按钮才能执行.而实际运用中,我们的加载开始和结束可能不需要点击,而是通过某个函数调用直 ...