
线段树分治
C202044zxy
这个作者很懒,什么都没留下…
展开
-
CF576E Painting Edges
一、题目点此看题二、解法这道题很特殊,我们在做线段树分治需要边询问边插入,具体来说就是把询问搞到线段上,如果一个询问lll成功的话那么我们就把[l+1,nxt−1][l+1,nxt-1][l+1,nxt−1]之间都插入这个边,其他就是正常线段树分治了。一开始初始化的时候nnn没有赋值就锅了,还是需要写一个初始化函数。#include <cstdio>#include <vector>#include <iostream>using namespace st原创 2020-05-18 16:09:17 · 155 阅读 · 0 评论 -
[CTSC2016]时空旅行
一、题目点此看题二、解法可以看出这些平行时空呈树形结构,每个星球都会出现在一段连续的dfndfndfn序中,而我们正是要对每个时空的星球中找最小值,那么可以把星球打在dfndfndfn的线段树上,使用线段树分治。考虑怎么从若干个点中选取最优解,首先y,zy,zy,z没有卵用,发现是平方的柿子,考虑斜率优化,x[j]>x[k]x[j]>x[k]x[j]>x[k]且jjj更优的条件:(X−xj)2+cj<(X−xk)2+ck(X-x_j)^2+c_j<(X-x_k)^2+原创 2020-05-15 11:46:36 · 333 阅读 · 0 评论 -
CF1140F Extending Set of Points
一、题目点此看题二、解法我们考虑把每个点拆成两个点,然后每个点对就是这个二分图里面的边。考虑一个连通的二分图(用给出的点对连接)的所有边都会存在,这里给出归纳法的证明。一开始都是单个点,所以满足,如果加入一条(x1,y1)(x_1,y_1)(x1,y1)的边,那么和x1x_1x1相连的yyy,和y1y_1y1相连的xxx都会连接,原来是一个完全二分图的话现在还会是一个完全二分图。可以用启发式合并并查集来维护这个二分图,回退就记录一下就行了,维护一下xxx区域的点和yyy区域的点,贡献就是乘原创 2020-05-15 10:12:17 · 196 阅读 · 0 评论 -
CF813F Bipartite Checking
一、题目点此看题二、解法把每条边出现时间段打到线段树上面,然后跑一遍线段树。问题在于维护一个树的结构,如果一条边连接的两点暂时还不连通,我们就连接一波。否则我们看这条非树边构成的环是不是奇环,如果是的话直接不符合条件,否则没有影响(这里你需要考虑两条非树边构成的环)可以用启发式合并的并查集,可以算一个点到根的距离的奇偶disdisdis,合并(u,v)(u,v)(u,v)需要连接一条dis(u)⊕dis(v)⊕1dis(u)\oplus dis(v)\oplus 1dis(u)⊕dis(v)⊕1,原创 2020-05-14 21:26:47 · 963 阅读 · 2 评论 -
[BZOJ4184]shallot
一、题目小苗去市场上买了一捆小葱苗,她突然一时兴起,于是她在每颗小葱苗上写上一个数字,然后把小葱叫过来玩游戏。每个时刻她会给小葱一颗小葱苗或者是从小葱手里拿走一颗小葱苗,并且让小葱从自己手中的小葱苗里选出一些小葱苗使得选出的小葱苗上的数字的异或和最大。这种小问题对于小葱来说当然不在话下,但是他的身边没有电脑,于是他打电话给同为Oi选手的你,你能帮帮他吗?你只需要输出最大的异或和即可,若小葱手中没有小葱苗则输出0。Input第一行一个正整数n表示总时间;第二行n个整数a1,a2…an,若ai大于0原创 2020-05-13 15:07:39 · 250 阅读 · 0 评论 -
CF938G Shortest Path Queries
一、题目点此看题原创 2020-05-07 14:41:02 · 179 阅读 · 0 评论