洛谷P1020 导弹拦截 题解 LIS扩展题 Dilworth定理
题目链接:https://www.luogu.com.cn/problem/P1020
题目大意:
给你一串数,求:
- 这串数的最长不上升子序列的长度;
- 最少划分成多少个子序列是的这些子序列都是不上升子序列。
第一个问题比较简单,就是用二分的方法 O(log n) 可以解决这个问题。
第二个问题,可以用 Dilworth定理 证明:
在一个序列中,最长不上升子序列的最少划分数就等于其最长上升子序列的长度
Dilworth定理参考自:https://www.cnblogs.com/ZDHYXZ/p/6871802.html
实现代码如下:
#include <bits/stdc++.h>
using namespace std;
const int maxn = 100010;
int n, cnt, a[maxn], h[maxn], ans;
int main() {
    while (~scanf("%d", &a[n])) n ++;
    for (int i = 0; i < n; i ++) {
        int id = upper_bound(h, h+cnt, a[i], greater<int>()) - h;
        if (id == cnt) h[cnt++] = a[i];
        else h[id] = a[i];
    }
    ans = cnt;
    cnt = 0;
    for (int i = 0; i < n; i ++) {
        int id = lower_bound(h, h+cnt, a[i]) - h;
        if (id == cnt) h[cnt++] = a[i];
        else h[id] = a[i];
    }
    printf("%d\n%d\n", ans, cnt);
    return 0;
}
洛谷P1020 导弹拦截 题解 LIS扩展题 Dilworth定理的更多相关文章
- 洛谷 P1020导弹拦截题解
		洛谷链接:https://www.luogu.org/problem/P1020 题目描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到 ... 
- 洛谷 P1020 导弹拦截 (LIS)
		第一问最长 不上升子序列,第二问最长上升子序列 套模板就好https://blog.csdn.net/qq_34416123/article/details/81358447 那个神奇的定理当作结论吧 ... 
- codevs1044 拦截导弹==洛谷 P1020 导弹拦截
		P1020 导弹拦截 题目描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度.某天 ... 
- 洛谷P1020导弹拦截——LIS
		题目:https://www.luogu.org/problemnew/show/P1020 主要是第二问,使用了dilworth定理:一个序列中最长不上升子序列的最大覆盖=最长上升子序列长度. di ... 
- 洛谷 P1020 导弹拦截(dp+最长上升子序列变形)
		传送门:Problem 1020 https://www.cnblogs.com/violet-acmer/p/9852294.html 讲解此题前,先谈谈何为最长上升子序列,以及求法: 一.相关概念 ... 
- codevs——T1044 拦截导弹  ||  洛谷——P1020 导弹拦截
		http://codevs.cn/problem/1044/ || https://www.luogu.org/problem/show?pid=1020#sub 时间限制: 1 s 空间限制: 1 ... 
- 洛谷 [P1020] 导弹拦截 (N*logN)
		首先此一眼就能看出来是一个非常基础的最长不下降子序列(LIS),其朴素的 N^2做法很简单,但如何将其优化成为N*logN? 我们不妨换一个思路,维护一个f数组,f[x]表示长度为x的LIS的最大的最 ... 
- 洛谷 - P1020 - 导弹拦截 - 最长上升子序列
		https://www.luogu.org/problemnew/show/P1020 终于搞明白了.根据某定理,最少需要的防御系统的数量就是最长上升子序列的数量. 呵呵手写二分果然功能很多,想清楚自 ... 
- 洛谷P1020 导弹拦截【单调栈】
		题目:https://www.luogu.org/problemnew/show/P1020 题意: 给定一些导弹的高度. 一个导弹系统只能拦截高度不增的一系列导弹,问如果只有一个系统最多能拦截多少导 ... 
随机推荐
- IOS开发之UISearchBar自定义外观
			MySearchBar.h如下: @interface MySearchBar : UISearchBar - (void)layoutSubviews; @end MySearchBar.m如下 ... 
- [kuangbin带你飞]专题九 连通图C - Critical Links UVA - 796
			这道题就是要求桥的个数. 那么桥相应的也有判定的定理: 在和u相邻的节点中,存在一个节点是最小的时间戳都比 当前u的访问次序要大,也就是说这个点是只能通过果u到达,那么 他们之间相邻的边就是的桥 #i ... 
- EF CodeFirst 实例Demo
			一直想搞一个EFCodeFirst的Demo,让自己通过实例真正了解CodeFirst,方便以后有需求的时候可以有思路.网上查了很多资料,发现很多博主的文章大量重复,根据推荐步骤走并不一定能够成功,而 ... 
- 2019-8-31-dotnet-将文件删除到回收站
			title author date CreateTime categories dotnet 将文件删除到回收站 lindexi 2019-08-31 16:55:58 +0800 2019-03-2 ... 
- pytorch lstm crf 代码理解 重点
			好久没有写博客了,这一次就将最近看的pytorch 教程中的lstm+crf的一些心得与困惑记录下来. 原文 PyTorch Tutorials 参考了很多其他大神的博客,https://blog.c ... 
- RBF神经网络的matlab简单实现
			径向基神经网络 1.径向基函数 (Radial Basis Function,RBF) 神经网络是一种性能良好的前向网络,具有最佳逼近.训练简洁.学习收敛速度快以及克服局部最小值问题的性能,目前已经证 ... 
- jq实现二级菜单/下拉菜单
			https://www.cnblogs.com/sandraryan/ 不是很难,直接上代码~ 有写注释 <!DOCTYPE html> <html lang="en&qu ... 
- Educational Codeforces Round 7、
			A - Infinite Sequence 题意:有一种这样的无限序列数 1,1,2,1,2,3..... (如果最大数n,那么就有从1到n的所有1到n的数): 思路:题意只给了1秒.直接模拟肯定 ... 
- urlencode()与urldecode()
			urlencode()函数原理就是首先把中文字符转换为十六进制,然后在每个字符前面加一个标识符%. urldecode()函数与urlencode()函数原理相反,用于解码已编码的 URL 字符串,其 ... 
- CSS 伸缩布局
			转载于:https://blog.csdn.net/weixin_41342585/article/details/80140513 1. flex-direction:设置伸缩容器中成员的排列方式 ... 
