description
analysis
-
如果把所有大小关系连成边,小的往大的连,就可以直接上拓扑
-
暴力连边时间复杂度 O ( n 2 ) O(n^2) O(n2),然而连边的过程,考虑用线段树优化
-
线段树上的所有儿子节点向父亲节点连 0 0 0边,
-
每个操作被分成 k + 1 k+1 k+1个小区间,然后该操作的编号向 k k k个区间最大值连 1 1 1边
-
对于线段树上表示小区间的 log \log log个区间,都向该编号连 0 0 0边
-
最后一波拓扑就好了,这类套路要记一下
code
#pragma GCC optimize("O3")
#pragma G++ optimize("O3")
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<queue>
#define MAXN 100005
#define ll long long
#define reg register ll
#define max(x,y) ((x>y)?(x):(y))
#define min(x,y) ((x<y)?(x):(y))
#