题目链接

题意:一个非负序列里 0可以变成包括负数在内的任何数 问这个序列的最长严格上升子序列有多长

官方给的题解:0可以转化成任意整数,包括负数,显然求LIS时尽量把0都放进去必定是正确的。因此我们可以把0拿出来,对剩下的做O(nlogn)的LIS,统计结果的时候再算上0的数量。为了保证严格递增,我们可以将每个权值S[i]减去i前面0的个数,再做LIS,就能保证结果是严格递增的。

条件一:这个最长的上升子序列一定包含了原始序列中的全部0
证明:假设一个某个上升子序列不完全包含全部的0,这样我们可以将没有被包含的0加入这个序列中,由于0可以变为任何数,所以新序列的长度一定大于等于原序列的长度

题解没看懂……但是照着题解写 还是AC了
代码:

#include <cstdio>
#include <iostream>
#define sf scanf
#define pf printf
using namespace std;
const int maxn = 100000 + 5;
int num[maxn];
int g[maxn];int main(){int T,ca = 0;sf("%d",&T);while( T-- ){int n;sf("%d",&n);int pre_zero = 0,num_size = 0;for(int i = 0;i < n;++i){int temp;sf("%d",&temp);if(!temp) pre_zero++;else{num[num_size++] = temp - pre_zero;}}int ans = 0;if(!num_size){ans = 0;}else{ans = 1;g[1] = num[0];for(int i = 1;i < num_size;++i){if(num[i] > g[ans]){g[++ans] = num[i];}else{int k = lower_bound(g + 1,g + ans + 1,num[i]) - g;g[k] = num[i];}}}pf("Case #%d: %d\n",++ca,ans + pre_zero);}return 0;
}

HDU 5773 DP LIS变形相关推荐

  1. HDU 5928 DP 凸包graham

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

  2. hdu 1171 dp(多重背包)

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

  3. UVA 1471 Defense Lines (LIS变形)

    题意:删除原序列中的一段连续子序列,使得剩下的序列中存在一段最长连续子序列. 题解:LIS变形 我们用l[i]l[i]l[i]和r[i]r[i]r[i]记录往右以iii结尾和往左以iii开头的最长连续 ...

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

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

  5. hdu 5087(LIS变形)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5087 解题思路:这道题其实仔细想想很简单,次长LIS只有两种可能,一种就是等于LIS-1,一种就是LI ...

  6. HDU 4352 数位dp + LIS(nlogn) + 状态压缩

    #define xhxj (Xin Hang senior sister(学姐))  If you do not know xhxj, then carefully reading the entir ...

  7. hdu(1069)——Monkey and Banana(LIS变形)

    题意: 如今给你n个石块,然后它由坐标来表示(x,y,z).可是它能够有不同的方法,也就是说它的三个坐标能够轮换着来的. 石块的数量不限,可是每次都必须保持上底面的长和宽严格递减,然后问你用这些石块所 ...

  8. hdu 5256 LIS变形

    给一个数列,问最少修改多少个元素使数列严格递增.如果不是要求"严格"递增,那就是求最长不降子序列LIS,然后n-LIS就是答案.要严格递增也好办,输入的时候用每个数减去其下标处理一 ...

  9. hdu 5256 序列变换 (LIS变形)

    序列变换 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  10. HDU - 3564 Another LIS(LIS+线段树)

    http://acm.hdu.edu.cn/showproblem.php?pid=3564 题意 给出1~n的插入顺序,要求每次插入之后的LIS 分析 首先用线段树还原出最终序列.因为插入的顺序是按 ...

最新文章

  1. 超越BERT的模型有哪些?
  2. c语言程序设计数据输入的,1.2 C语言的发展与特点免费阅读_C语言程序设计教程免费全文_百度阅读...
  3. js 对已知数组数据的导出EXCEL
  4. linux网卡名称乱编,小斗CentOS7.x网卡名称错乱、及网卡启动失败。
  5. [js] innerHTML有什么缺点?
  6. java前言_Java Web前言
  7. python xposed_GitHub - twqdev/CPWechatXposed: 使用Xposed Hook微信等APP
  8. LINUX入侵检测指导
  9. php生成随机不重复的数字_PHP生成不重复随机数的几种方法
  10. Python重复字符串并使用指定分隔符进行连接
  11. 编码的未来是“无代码”
  12. MySQL读写分离详解(二)——MyCAT实战配置
  13. Python 深入浅出 - HelloWorld
  14. 图像处理中的白化处理
  15. 《孙子兵法》对现代战争还适用吗?为什么?
  16. github首次使用提交项目
  17. 【物理】半导体物理 西安电子科技大学 柴常春等主讲-[笔记P15-P18]
  18. Android之如何分析手机系统相册图片和视频删除后保存的位置
  19. javascript轮播技术
  20. 什么是拓扑(Topology) - 3D 角色 建模过程中的 中的术语:拓扑

热门文章

  1. inventor 波纹阵列_Inventor装配零部件阵列功能详解
  2. 我的世界热力膨胀JAVA_我的世界TE4教程热力膨胀能源炉的合成与使用数据
  3. java 返回指定月份的最后一天的59分59秒
  4. [论文阅读笔记]DeepFool: a simple and accurate method to fool deep neural networks
  5. 解读提升百度权重-刷百度指数的方法
  6. python爬取别人qq空间相册_用python爬取QQ空间
  7. 普通住宅和非普通住宅税费
  8. 简单代码变出超个性化的QQ昵称
  9. 括号匹配(POJ2955)题解
  10. android 测光模式,Android 测光梳理