题意:给一个非负整数的数列,其中0可以变成任意整数,包括负数,求最长上升子序列的长度。

题解:LIS是最简单的DP了,但是变形之后T^T真的没想到。数据范围是10^5,只能O(nlogn)的做法,所以一直在想0要插到哪里。

题解是先求不包括0的数列的LIS,再将0插入其中,由于直接插入不会保证递增,对其他数字进行处理,就是减去这个数字前面0的个数。

这个可以理解成优先选择0,所以一个数如果要被选中,就要大于中间这个0插入后变成的数,当然不用担心这样不对,因为如果一个数因为处理后不能选进,其实0也是可以变成这个数的,

说的有些乱,但是仔细想想确实是能够像明白的。很有趣的一道题。

AC代码:

#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
const int N = ; int a[N], b[N]; int main(int argc, char const *argv[])
{
//freopen("in", "r", stdin);
int T, cas = ;
scanf("%d", &T);
while (T--) {
printf("Case #%d: ", cas++);
int n; scanf("%d", &n);
int len_b = ;
int cnt_zero = ; for (int i = ; i < n; ++i) {
scanf("%d", a+i);
if (a[i] == ) {
cnt_zero++;
} else {
a[i] -= cnt_zero;
int p = lower_bound(b, b+len_b, a[i]) - b;
if (p == len_b) b[len_b++] = a[i];
else b[p] = a[i];
}
} printf("%d\n", len_b + cnt_zero);
}
return ;
}

hdu5773--The All-purpose Zero(LIS变形)的更多相关文章

  1. 九度 1557:和谐答案 (LIS 变形)

    题目描述: 在初试即将开始的最后一段日子里,laxtc重点练习了英语阅读的第二部分,他发现了一个有意思的情况.这部分的试题最终的答案总是如下形式的:1.A;2.C;3.D;4.E;5.F.即共有六个空 ...

  2. hdu 1087(LIS变形)

    Super Jumping! Jumping! Jumping! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 ...

  3. UVA 437 巴比伦塔 【DAG上DP/LIS变形】

    [链接]:https://cn.vjudge.net/problem/UVA-437 [题意]:给你n个立方体,让你以长宽为底,一个个搭起来(下面的立方体的长和宽必须大于上面的长和宽)求能得到的最长高 ...

  4. UVa 1471 (LIS变形) Defense Lines

    题意: 给出一个序列,删掉它的一个连续子序列(该子序列可以为空),使得剩下的序列有最长的连续严格递增子序列. 分析: 这个可以看作lrj的<训练指南>P62中讲到的LIS的O(nlogn) ...

  5. UVA1471( LIS变形)

    这是LIS的变形,题意是求一个序列中去掉某个连续的序列后,能得到的最长连续递增序列的长度. 用DP的解法是:吧这个序列用数组a来记录,再分别用两个数组f记录以i结尾的最长连续递增序列的长度,g[i]记 ...

  6. HDU-1160.FatMouse'sSpeed.(LIS变形 + 路径打印)

    本题大意:给定一定数量的数对,每个数保存着一只老鼠的质量和速度,让你求出一个最长序列,这个序列按照质量严格递增,速度严格递减排列,让你输出这个序列的最长长度,并且输出组成这个最长长度的序列的对应的老鼠 ...

  7. POJ 1836-Alignment(DP/LIS变形)

    Alignment Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 13465   Accepted: 4336 Descri ...

  8. poj 1836 LIS变形

    题目链接http://poj.org/problem?id=1836 Alignment Time Limit: 1000MS   Memory Limit: 30000K Total Submiss ...

  9. P1481 魔族密码(LIS变形)

    题目描述(题目链接:https://www.luogu.org/problem/P1481) 风之子刚走进他的考场,就…… 花花:当当当当~~偶是魅力女皇——花花!!^^(华丽出场,礼炮,鲜花) 风之 ...

随机推荐

  1. HDU 2159 FATE (DP 二维费用背包)

    题目链接 题意 : 中文题不详述. 思路 : 二维背包,dp[i][h]表示当前忍耐值为i的情况下,杀了h个怪得到的最大经验值,状态转移方程: dp[i][h] = max(dp[i][h],dp[i ...

  2. MVC项目总结(别人的好文章)

    引用 http://www.cnblogs.com/xling/archive/2012/07/11/2587002.html

  3. 关于haproxy hdr_reg(host) 的一些解释

    I've recently taken over an environment using HAProxy, and I'm attempting to learn the config and wh ...

  4. DOCTYPE, HTML和XHTML, Strict DTD和Transitional DTD, Quirks Mode和Standard Mode

    在HTML里面声明DOCTYPE一般会有以下几种: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ...

  5. github上如何合并别人的pull request

    https://github.com/Epix37/Hearthstone-Deck-Tracker/issues/1391 I fetch the code from your repository ...

  6. linux bash脚本把A和B文件中有相同ID的B文件的内容输出到文件C

    bash脚本把A和B文件中有相同ID的B文件的内容输出到文件C. Aid文件:ID001.1ID032.1ID090.10 Bfilt文件:XX XX XXX ID001.1 XXX999999999 ...

  7. bzoj2324后续思考

    昨天写bzoj2324的解题报告的时候突然隐隐约约发现了我程序的一点问题 睡了一觉之后找到了反例 如下: 4 4 2 0 1 2 1 2 1 2 3 2 2 4 2 对于这个测试数据,显然最短路径和为 ...

  8. Spring3中用注解直接注入properties中的值

    在bean(可是controller, service, dao等了)中,使用@Value注解: @Service public class TestService{ @Value("${s ...

  9. 基于VPN搭建混合云架构需要考虑的网络因素

     Joy Qiao from MSFT Wed, Jan 21 2015 8:44 AM 很多用户在搭建混合云架构时,会使用到微软Azure虚拟网络中的 VPN功能,来实现Azure中的虚拟网络与用户 ...

  10. Android 主题动态切换框架:Prism

    Prism(棱镜) 是一个全新的 Android 动态主题切换框架,虽然是头一次发布,但它所具备的基础功能已经足够强大了!本文介绍了 Prism 的各种用法,希望对你会有所帮助,你也可以对它进行扩展, ...