随笔分类 - 1.————数据结构————
摘要:由于是一个二次函数的关系,所以易证应该尽量让两组的顺序相同 然后就离散化乱搞几发,最后就变成了求逆序对的数量了
阅读全文
摘要:用一个差分树状数组维护一下每个深度的和,然后每次拿着路径端点和lca加一加减一减就行了
阅读全文
摘要:把一个点拆成三个,分别对应它的同类、它的猎物和它的天敌,这样的话(以下的相等都是并查集意义上的): 如果令a,b同类,那么a的猎物不能是b的同类,a的天敌不能是b的同类 如果令a吃b,那么a的同类不能是b的同类、a的天敌不能是b的同类。 要令a,b同类,就使(a和b)的同类、猎物、天敌分别相等 要令
阅读全文
摘要:先按斜率从小到大排序,然后如果排在后面的点B和前面的点A的交点是P,那B会把A在P的右半段覆盖掉,A会把B在P的左半段覆盖掉。 然后如果我们现在又进来了一条线,它跟上一条的交点还在上一条和上上条的左边,这就说明上一条完全被覆盖了 这样的话,维护一个单调栈做一做就可以了 (要先处理一下,斜率相同的只留
阅读全文
摘要:https://www.nowcoder.com/acm/contest/172/C (sbw大佬太强啦 orz) 先把每一个路径(x,y)分成(x,lca),(y,lca)两个路径,然后就能发现,对于某两个(直上直下的)路径a,b,b的下端点在a的下端点子树中,且b的上端点深度<=a的上端点深度,
阅读全文
摘要:对于某个靴子,如果0代表某个格能走,1代表不能走,那么只要连续的1的个数的最大值>=靴子的步长,那这个靴子就不能用。 那么只要对靴子和格子都按深度排个序,然后从大到小来扫一遍(靴子越来越浅,能走的格子就越来越少,也就是相当于在增加1的个数),现在只要能维护把0变成1后,连续的1个数的最大值就行了 用
阅读全文
摘要:新建一个N+1的点,飞出去的连到这个上,记size,每次统计x和N+1的链长就可以。 别忘了编号是从0开始的
阅读全文
摘要:并查集。 判相切或相交的时候可以两边同时平方,就不需要double和开根号了。
阅读全文
摘要:先膜黑科技讲义 - Magolor orz 基础 设lowbit(x)表示的是把x的二进制只留下最低一位的1,然后lowbit(x)=x&(-x) (我也不知道为什么) 设c[x]表示从i往前一共lowbit(x)个数的和,那么x-lowbit(x)就是c[x]表示的范围的前一个数。 然后可以得到c
阅读全文
摘要:不会lct,所以只能树剖乱搞 一般这种删边的题都是离线倒着做,变成加边 他要求的结果其实就是缩点以后两点间的距离。 然后先根据最后剩下的边随便做出一个生成树,然后假装把剩下的边当成加边操作以后处理 这样的话,就可以做树剖来维护现在的两点间距离。 然后考虑加边,其实就是加了一条边然后某一处成环了,缩成
阅读全文
摘要:题意:给你一个1~N的排列,然后让你按顺序把它们插到一个二叉搜索树里,然后问能插出同样的二叉搜索树的 字典序最小的排列是什么 本来可以直接模拟建树然后dfs一下输出结果...然而有可能会退化成链,最差复杂度是O($n^2$) 然后貌似这题可以用笛卡尔树,先对输入排序然后实现O(n)建树..但我不会
阅读全文
摘要:题意:给一个数列,维护两个操作,区间开根号、询问区间和 注意到1e12开根号六次后就变成1,而且根号1等于1 也就是说,就算我们用单点修改,只要跳过1,那么修改的次数最多也就是6n 那么维护一个区间最大值,如果最大值<=1就直接跳过这个区间,剩下的单点修改即可
阅读全文

浙公网安备 33010602011771号