题目链接:猛戳这里

本题的关键是0的处理,0 是万能的数字,但不能重复,所以怎么好处理这个0非常关键。

于是一个思想就出来了,可不可以先不处理0,然后让a[i]  减去 i  之前 0 的个数。这样相对的大小不会改变,又 给 0 留下了位置。一举两得。

为什么可以?

举个栗子:1 0 2 0 3 0 3;

处理之后的序列为:1 1 1 0 (把 0 忽略,每一位非零 数字 - 0 的个数)

最长递增序列为 1 :

1 + 3(0的个数) = 4;

答案为四;

#include <algorithm>
#include  <iostream>
#include   <cstring>
#include    <string>
#include    <vector>
#include     <cmath>
#include     <deque>
#include       <map>using namespace std;
typedef long long ll;#define ForU(i,a,b) for(i = a;i < b;i ++)
#define ForD(i,a,b) for(i = a;i > b; i --)
#define Max 1000001int number[Max];
int B[Max];
int len;void revise(int l,int r,int under){if(l == r){if(B[l] > number[under])B[l] = number[under]; return ;}else{int mid = (l + r) >>1;if(B[mid] >= number[under]){revise(l,mid,under);}else{revise(mid+1,r,under);}}
}int main(){int n,i,j,k,t;scanf("%d",&t);ForU(k,1,t+1){scanf("%d",&n);int sum = 0; memset(number,0,sizeof(number));ForU(i,0,n){scanf("%d",&j);if(j == 0){sum ++;}else{number[i-sum] = j - sum;}}len = 0;memset(B,0,sizeof(B));ForU(i,0,n - sum){if(len == 0 || number[i] > B[len-1]){B[len ++] = number[i];}else{revise(0,len -1,i);  }}printf("Case #%d: %d\n",k,len+sum);}return 0;
} /****
2
7
2 0 2 1 2 0 5
6
1 2 3 3 0 0
10
10
8 6 2 3 9 5 2 0 1 5*****/

HDU 5773 (DP)相关推荐

  1. HDU 5928 DP 凸包graham

    给出点集,和不大于L长的绳子,问能包裹住的最多点数. 考虑每个点都作为左下角的起点跑一遍极角序求凸包,求的过程中用DP记录当前以j为当前末端为结束的的最小长度,其中一维作为背包的是凸包内侧点的数量.也 ...

  2. hdu 1171 dp(多重背包)

    View Code //hdu 1171 dp(多重背包)//题意:把所有物品的价值尽量分为相等的两份,不能等分的话 //后面那份可以稍小于前面的 //求出价值总和后,令价值的一半为背包容量,让背包尽 ...

  3. HDU 5773 The All-purpose Zero(O(nlgn)求LIS)

    http://acm.hdu.edu.cn/showproblem.php?pid=5773 题意: 求LIS,其中的0可以看做任何数. 思路: 因为0可以看做任何数,所以我们可以先不管0,先求一遍L ...

  4. HDU 4832(DP+计数问题)

    HDU 4832 Chess 思路:把行列的情况分别dp求出来,然后枚举行用几行.竖用几行,然后相乘累加起来就是答案 代码: #include <stdio.h> #include < ...

  5. hdu 5086(dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5086 题目大意:给出长度为n的数组,然后要求累计里面的每个子串的和. 解题思路:这道题直接枚举肯定不行 ...

  6. hdu 2059(dp)

    龟兔赛跑 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem Des ...

  7. HDU 3646 DP + 二分

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=3646 题意:你有N把武器,每把武器可以对敌人造成一定的伤害(et:攻击力500,敌人血量为200,杀死敌人 ...

  8. Hdu 4293 DP

    题意: n个人说自己前面有多少人 后面有多少人 求出说真话人数最多的情况 每个样例有 一个 n 表示n个人 接下来 n 行有a b 表示他前面的人数和后面的人数 思路: 如果已经知道了其中一组的人数~ ...

  9. hdu 3905(dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3905 思路:dp[i][j]表示前i分钟,睡了j分钟收获的的最大价值,并记tmp_dp[i][j]为从 ...

  10. hdu 4472 dp

    http://acm.hdu.edu.cn/showproblem.php?pid=4472 第一直觉找规律,第二直觉 把树拆成子树,然后递推或者DP 然后发现不行,然后才发现自己题都没读,,,, d ...

最新文章

  1. Echart遇到的问题:tooltip提示框大小异常
  2. mongodb update
  3. OpenCV形态学变换函数morphologyEx()开运算的使用
  4. linux添加中文字库主线任务,Linux 添加中文字体库
  5. extundelete实现Linux下文件/文件夹数据恢复!
  6. 一道不知道哪里来的容斥题
  7. pymongo根据ObjectId 查找文档记录
  8. matches php,PHP 正则表达式 推荐
  9. excel宏-自定义筛选查询
  10. 九秒倒计时c语言编程,可变信息倒九秒半程倒计时器的制作方法
  11. 提供一个中国身份证号码判断的类
  12. 想成为我的同事,不会点Linux怎么行!
  13. android imageview 拉伸图片大小,【教程】安卓保证图片长宽比的同时拉伸图片
  14. 加密Escape/解密Unescape
  15. 新版Edge如何长截图
  16. Paper中含有Type3的字体,需要修改为Type1字体
  17. 在校外使用校园网服务
  18. 带参数的的main函数
  19. 解决AE在win10/11系统上安装失败问题 AEcc2021-After Effects 2021中文正式版安装教程
  20. 弹弹堂拍卖场查看具体拍卖截止时间

热门文章

  1. 电阻电容串联、并联起来用在电路中,起什么作用?
  2. 远方有你,Emacs
  3. IOS 开发学习29 Socket框架 AsynSocket的使用
  4. 惠州学院计算机学院陈东骏,教学情况简报第107期
  5. SylixOS网卡驱动实现篇
  6. 石家庄发展史 9(转)
  7. adobe 服务器当前无响应,浏览器假死无响应故障解决方法
  8. 和老外聊天、发邮件常用英语缩写(超实用)
  9. 如何看待腾讯市值(按 2012 年 8 月 17 日股价)超过 Facebook?
  10. android 置灰不可点击,android 按钮置灰效果