摘要: 题意: 对于任意一个数列,如果能在有限次进行下列删数操作后将其删为空数列,则称这个数列可以删空。一次删数操作定义如下: 记当前数列长度为 k,则删掉数列中所有等于 k 的数。 现有一个长度为 n 的数列 a,有 m 次修改操作,第 i 次修改后你要回答:经过 i 次修改后的数列 a,至少还需要修改几 阅读全文
posted @ 2020-01-29 23:52 1124828077ccj 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 题意: 给定一个字符串,长度小于等于500000。让你找一个二元组序列(l[i],r[i]),使得区间[l[i+1],r[i+1]]的字符串是区间[l[i],r[i]]的子串。求最长的序列长度。 题解: 首先有一个贪心的想法,第i个字符串肯定恰好比第i+1个字符串多一个字符。 考虑对于位置i,如何判 阅读全文
posted @ 2020-01-28 23:34 1124828077ccj 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 题意: 有n个位置上可以盖房子,一开始每个位置都是空的,每次会让你将位置x的房子的高度变成y,询问从0可以看到多少栋房子,x,y给定。如果这栋楼房上任何一个高度大于0的点与(0,0)的连线没有与之前的线段相交,那么这栋楼房就被认为是可见的。 题解: 如果将一个房子的最高点和(0,0)点的连线的斜率作 阅读全文
posted @ 2020-01-28 23:19 1124828077ccj 阅读(112) 评论(0) 推荐(0) 编辑
摘要: 题意: 给一个n个点的图,每个点有权值,每条边有权值。q次询问,每次询问从a出发不经过边权大于x的边能够到达的所有点中,点权第k大的值。 n<=100000,q<=500000 题解: 点权第k大的值,容易想到可持久化线段树,问题就在于如何把要查询的点转化为一段连续的区间。 考虑建立Kruskal重 阅读全文
posted @ 2020-01-28 23:06 1124828077ccj 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 题意: 给一个1-n的全排列,q次操作,每次操作排序一段区间(升序或降序都有可能),最后问第k个位置是多少。 n<=100000,q<=100000。 题解: 显然,此题直接模拟效率为O(nqlogn),过不去。 我们无法做到快速的排序一段数值在[1,n]范围内的区间,但是我们可以用logn的时间做 阅读全文
posted @ 2020-01-27 22:28 1124828077ccj 阅读(98) 评论(0) 推荐(0) 编辑
摘要: 题意: 给一棵树,求三元组(a,b,c)满足a和b都是c的祖先,且b到a的距离小于等于k,a和k给定 题解: 分情况讨论(以下内容的子节点数都不包括自己本身)。 如果b是a的祖先,那么贡献就是(a的子节点数*(k和a的祖先的最小值))。很好理解,因为b是a的祖先且距离小于等于k,所以b不能超过a的k 阅读全文
posted @ 2020-01-27 22:16 1124828077ccj 阅读(107) 评论(0) 推荐(0) 编辑
摘要: 题意: 有一棵树,每次两种操作,给一个点打上标记或者询问一个点最近的一个打了标记的祖先(包括自己),一开始只有根节点有标记 题解: 本题方法较多,这里采用一种最简单的做法。 先将树转化成dfs序,每一次打标记操作相当于在自己的子树上覆盖一个值,这个值也就是自己的深度。但本题要求取最近的,也就是深度最 阅读全文
posted @ 2020-01-27 20:56 1124828077ccj 阅读(97) 评论(0) 推荐(0) 编辑