LIS
青烟绕指柔!
我不怕千万人阻挡,只怕自己投降。
展开
-
HDU - 6635
题目链接:HDU - 6635随机下,LIS长度的期望为 sqrt(n) ,那么我们考虑时光回溯,先求出一个LIS,然后如果当前删除的位置不在LIS上面,那么直接删掉即可,否则重新求LIS。复杂度为:O(nsqrt(n)*log(n)),因为删除位置在LIS上面的期望为sqrt(n)。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>//#define int long l原创 2020-07-29 11:03:35 · 250 阅读 · 0 评论 -
弹钢琴
题目链接:弹钢琴对音高排序之后,不难发现是一个最大权值的LIS问题。线段树即可。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>#define int long longusing namespace std;const int N=1e6+10;int n,mx[N<<2],m;struct node{int a,b,c;}t[N];vector&l原创 2020-07-25 19:13:01 · 130 阅读 · 0 评论 -
Cow Jog G
题目链接:Cow Jog G显然我们只和第一个位置,和最后的位置有关。速度其实无所谓。然后就变成一个一个序列的最少LIS划分数,根据dirworth定理,也就是最长反链。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>#define int long longusing namespace std;const int N=1e5+10;int n,t,a[N],d[原创 2020-07-02 10:51:48 · 261 阅读 · 0 评论 -
楼房重建
题目链接:楼房重建显然就是维护区间的LIS。但是我们pushup不是O(1)的,需要在线段树上面找。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>//#define int long longusing namespace std;const int N=1e5+10;int n,m,sum[N<<2]; double mx[N<<2];原创 2020-05-29 12:47:41 · 228 阅读 · 0 评论 -
LIS on Tree
题目链接:LIS on Tree最开始以为要以某个点结尾,然后一直wa,其实是跟到这个点路径上的任意最大LIS。显然我们就和普通求LIS一样,维护一个权值数据结构,然后区间查询维护。因为是路径上,所以 res[x] =max ( res[fa] , val )现在是一棵树,每次回溯的时候取消操作即可。AC代码:#pragma GCC optimize("-Ofast","-funr...原创 2020-05-03 13:25:59 · 296 阅读 · 0 评论 -
序列变换
题目链接: 序列变换其实就是找一个连续的非严格LIS。什么是连续的非严格LIS呢?比如序列:4 2 3 5 。LIS应该是2 3 4,但是这个序列中间还有其他元素。所以连续的非严格LIS应该是4 5 或者 2 3.AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h&g...原创 2020-04-19 10:42:21 · 258 阅读 · 0 评论 -
Codeforces - Optical Experiment
题目链接:Codeforces - Optical Experiment和某一年的NOIP的一道题比较像。我们可以发现,如果线是两两相交的,那么一定是上下互为逆序的。然后我们对上面重新标号即可,下面求一个LIS,不过是从后往前的LIS。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/s...原创 2020-03-04 16:57:28 · 171 阅读 · 0 评论 -
选点
题目链接:选点看似像树形dp,而且还很麻烦。但是我们可以注意一下,这是二叉树,大小关系为: 左儿子 > 右儿子 > 根所以如果我们先遍历根,然后往右儿子走,然后往左儿子走,的dfs序。然后就是求LIS就行了。比较思维。AC代码:#include<bits/stdc++.h>using namespace std;const int N=1e5+10;...原创 2019-12-23 16:16:24 · 257 阅读 · 0 评论