摘要:题意:给定一个长为n的序列和k,定义子串【L,R】(L<=R)合法当: 1.max(a[L]..a[R])-(R-L+1)<=k 2.【L,R】中没有重复的数字 问合法子串的个数 n,k,a[i]<=3e5 思路:对于两个限制分开考虑 对于限制2,预处理出每个位置只考虑限制2左右最多能扩展到哪里 对
阅读全文
摘要:题意:有一棵n个结点的只由小写字母组成的Trie树,给定它的具体形态,问删除哪一层后剩下Trie树的结点数最少 n<=3e5 思路:先建出原Trie树,对于每一层的每一个结点计算删除后对答案的贡献,这一部分使用启发式合并 官方题解证明了时间复杂度是一个log的 http://codeforces.c
阅读全文
摘要:题意: 边权可能为负 思路: 感觉我自己写的还是太过僵硬了,可以灵活一点,比如可以多写几个不同的dfs求出不同的信息,而不是压到同一个dfs里
阅读全文
摘要:题意: 有n个位置,每个位置上的数字是a[i],现在有强制在线的若干个单点删除操作,每次删除的位置都不同,要求每次删除之后求出最大的连续区间逆序对个数 n<=1e5,1<=a[i]<=n 思路: 对于每次删除操作我们可以考虑被删除的数字的贡献 比如区间[l,r]内删除了x这个位置,被分成了[l,x-
阅读全文
摘要:题意:支持合并,求块内K小数 对于 100%的数据 n≤100000,m≤n,q≤300000 思路:对于每一个块建立一棵动态开点的线段树,暴力(启发式?)合并后二分下就行了 merge用函数的方式写因为懒得讨论x,y其中一个为0的情况,反正是把节点y并到x上 为什么这么暴力都不T?大概是因为随机数
阅读全文
摘要:题意:一个带点权的森林,要求维护以下操作: 1.询问路径上的点权K大值 2.两点之间连边 n,m<=80000 思路:如果树的结构不发生变化只需要维护DFS序 现在因为树的结构发生变化,要将两棵树合并,这步可以用启发式合并,将比较小的树暴力连接到较大的树上面 离线的LCA算法无法维护,而倍增可以合并
阅读全文