xianduanshu】的更多相关文章

https://www.cnblogs.com/xenny/p/9739600.html ***************https://blog.csdn.net/shiqi_614/article/details/8228102 *********https://blog.csdn.net/zearot/article/details/48299459 **********https://blog.csdn.net/WhereIsHeroFrom/article/details/7896971…
整体二分: 对于每一个修改操作,标记为1,并且加一个标记为-1的这个位置原来值,并且对于a数列每个点都当成修改操作 然后整体二分,扫当前操作区间lr,把在值域区间标记为1和-1的操作都在树状数组对应位置上加/减出来,然后询问操作根据k和询问答案大小决定放在哪部分传下去 #include<iostream> #include<cstdio> using namespace std; const int N=1000005; int n,m,a[N],tot,ans[N],con,t[…
一眼做法,好处是好想好写坏处是常数大,容易被卡(bzoj loj 洛谷开O2 能AC,不开有90分-- 大概就是树剖之后维护线段树,在线段树的每个节点上上维护一个线性基,暴力\( 60^2 \)的合并儿子 对于每次查询,在树上跳重链,把这些区间的线性基暴力合并上,然后ans在合并之后的线性基上贪心即可. 这样,时间复杂度就是预处理\( 60^2nlogn \),查询的话跳链一个log,线段树查询60^2log,合并线性基60^2,总的就是\( O(60^2nlog_2n+qlog_2n(60^2…
首先,如果没有换根操作的话,那么这就是一个普通的树链剖分. 先按照以1为根进行树链剖分,用线段树维护最小值.现在考虑换根操作,设当前根为root,查询的子树根节点为想,会发现有如下三种情况: \( root=x \),相当于求全区间和,直接返回即可: x在root的子树中,那么换根对它没有影响,直接当做没有换根来查询即可: x不在root的子树中,那么答案为全区间和减去x下面root所在的子树的区间和. 分类讨论即可. #include<iostream> #include<cstdio…
%.8lf会WA!!%.8lf会WA!!%.8lf会WA!!要%.10lf!! 和4817有点像,但是更复杂. 首先对于操作一"在编号为x的计算机中植入病毒的一个新变种,在植入一个新变种时,病毒会在局域网中搜索核心计算机的位置,并沿着网络中最短的路径感染过去",长得是不是有点像LCT中的access操作?进而发现,如果把同一颜色的点连起来作为LCT中的重边的话,那么询问二就相当于问路径上的虚边有多少. 假设没有换根操作,那么第二.三个操作是可以用树剖在线段树上维护的. 设每个点的权值v…
非常妙的一道题. 首先对于操作一"把点x到根节点的路径上所有的点染上一种没有用过的新颜色",长得是不是有点像LCT中的access操作?进而发现,如果把同一颜色的点连起来作为LCT中的重边的话,那么询问二就相当于问路径上的虚边有多少. 然后第二.三个操作是可以用树剖在线段树上维护的. 设每个点的权值\( val \)为这个点到根的路径上颜色个数,也就是虚边个数.那么考虑access操作的影响,对于他断开的重边,所在子树加一,对于他连上的重边,所在子树减一.直接在access过程中处理即…
因为一开始调试不知道unsigned怎么输出就没有加\n结果WA了一上午!!!!!然而最后放弃了unsigned选择了&2147483647 首先链剖,因为它所给的链一定是某个点到根的路径上的一段(一开始没看到),也就是说链是不会拐弯的,那么考虑容斥,加上每条链的长度减去两条链的交的长度加上三条链的交的长度... 关于求链的交,因为链不会拐弯,所以对于两条链上深度较深的两个点\( (v_1,v_2) \)求\( lca \),如果\( lca \)的深度小于两条链的较浅点的任意一个,那么这两条链…