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的更多相关文章

  1. Codeforces 446A. DZY Loves Sequences (线性DP)

    <题目链接> 题目大意: 给定一个长度为$n$的序列,现在最多能够改变其中的一个数字,使其变成任意值.问你这个序列的最长严格上升子段的长度是多少. #include <bits/st ...

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

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

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

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

  4. Codeforces Round #FF 446A DZY Loves Sequences

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

  5. Codeforces 447C - DZY Loves Sequences

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

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

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

  7. codeforces C. DZY Loves Sequences

    http://codeforces.com/contest/447/problem/C 题意:给你n个数的序列,然后让你改变其中的一个数,求得最长上升连续序列的长度值. 思路:先从左边开始求出连续递增 ...

  8. CodeForces 447C DZY Loves Sequences DP

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

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

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

随机推荐

  1. SinalR+WebSocket

    1.参考资料: http://www.asp.net/signalr/overview/guide-to-the-api/hubs-api-guide-server http://signalr.ne ...

  2. String类中一些的方法的应用

    一.整理string类 1.Length():获取字串长度: 2.charAt():获取指定位置的字符: 3.getChars():获取从指定位置起的子串复制到字符数组中:(它有四个参数) 4.rep ...

  3. reporting service & wpf

    WPF做Windows程序界面很好很强大,RDLC做报表免费又好用,如何将两者强强联合呢?   方法1:    可以直接在WPF项目中加入一个WinForm窗体,在这个窗体上进行报表操作,与一般的Wi ...

  4. java中获取日期和时间的方法总结

    1.获取当前时间,和某个时间进行比较.此时主要拿long型的时间值. 方法如下:  要使用 java.util.Date .获取当前时间的代码如下 Date date = new Date(); da ...

  5. maven说

    maven打包命令:mvn assembly:assembly 打包成jar包需要修改配置把unpack改成false文件在: C:\Users\Administrator\.m2\repositor ...

  6. RDIFramework.NET ━ 9.15 个性化设置 ━ Web部分

    RDIFramework.NET ━ .NET快速信息化系统开发框架 9.15  个性化设置 -Web部分 个性化设置,主要针对用户的偏好对界面进行设置,主界面如下: 9.15.1界面皮肤设置 目前框 ...

  7. Latex 分段函数

    Latex里面分段函数的输入: \begin{equation}     P_{r-j}=    \begin{cases}    0&\mbox{if $r-j$ is odd}\\     ...

  8. 文件上传(java web)

    文件上传: 对表单的要求: * method="post" * enctype="multipart/form-data" * 表单中需要添加文件表单项:< ...

  9. iOS-打开word、ppt、pdf、execl文档方式

    这里面包括下载和打开文档的操作:需要先导入<AFNetworking>的框架 第一步:创建一个显示文档的view:ReadViewController (1).h的代码如下: @inter ...

  10. 提取SD卡中的图片

    读取SD卡的权限 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> ...