题目描述 Atm有一段时间在虐qtree的题目,于是,他满脑子都是tree,tree,tree…… 于是,一天晚上他梦到自己被关在了一个有根树中,每条路径都有边权,一个神秘的声音告诉他,每个点到其他的点有一个距离(什么是距离不用说吧),他需要对于每个点回答:从这个点出发的第k小距离是多少: 如果atm不能回答出来,那么明天4019的闹钟将不会响,4019全寝可能就迟到了,所以atm希望你帮帮他. 输入 第一行,两个正整数n,k,表示树的点数,询问的是第几小距离: 第二~n行,每行三个正整数x,y…
裸点分,点分树每层维护有序表,查询二分,复杂度$O(nlog^3n)$. #include<bits/stdc++.h> #define M (u+v>>1) #define pb push_back #define FOR(i,v)\ for(int i=0;i!=v.size();++i) using namespace std; void eq2(int&x,int y){x=x<y?y:x;} const int N=1e5+5; typedef int ar…
[BZOJ2117] [2010国家集训队]Crash的旅游计划 Description 眼看着假期就要到了,Crash由于长期切题而感到无聊了,因此他决定利用这个假期和好友陶陶一起出去旅游. Crash和陶陶所要去的城市里有$N (N > 1) $个景点,Crash用正整数\(1\)到\(N\)给景点标号.这些景点之间通过\(N − 1\)条无向道路相连,每条道路有一个长度,并且保证任意两个景点之间都有且仅有一条路径相连.现在对于一个景点\(s\),Crash和陶陶从\(s\)出发,然后访问一…
[BZOJ2051]A Problem For Fun/[BZOJ2117]Crash的旅游计划/[BZOJ4317]Atm的树 题目大意: 给出一个\(n(n\le10^5)\)个结点的树,每条边有一个正整数权值\(w_i(w_i\le10^4)\),定义两个结点的距离为连接这两个结点路径上边权的和.对于每个结点\(i\),它到其他\(n-1\)个结点都有一个距离,将这些距离从小到大排序,输出第\(k\)个距离. 思路: 重心剖分预处理每个重心管辖范围内从重心出发能够组成的所有距离.询问时二分…
Description 眼看着假期就要到了,Crash由于长期切题而感到无聊了,因此他决定利用这个假期和好友陶陶一起出去旅游. Crash和陶陶所要去的城市里有N (N > 1) 个景点,Crash用正整数1到N给景点标号. 这些景点之间通过N - 1条无向道路相连,每条道路有一个长度,并且保证任意两个景点之间都有且仅有一条路径相连. 现在对于一个景点s,Crash和陶陶从s出发,然后访问一个景点序列{v0, v1, v2, … , vk}, 其中v0就是s,且vi-1和vi(0 < i ≤…
传送门 思路 如果没有强制在线的话可以离线之后CDQ分治随便搞. 有了强制在线之后--可能可以二维线段树?然而我不会算空间. 然后我们莫名其妙地想到了动态点分治,然后这题就差不多做完了. 点分树有一个重要的性质:若\(x,y\)在点分树上的\(lca\)是\(w\),那么在原树上\(w\)也在\(x\rightarrow y\)的路径上. 我们可以在点分树上枚举\(lca\),算一下这个\(lca\)统领的连通块对\(x\)有多少贡献,减去\(x\)所在的连通块贡献,就ok了. 贡献可以用树状数…
题意:有N个位置,M个操作.操作有两种,每次操作 如果是1 a b c的形式表示在第a个位置到第b个位置,每个位置加入一个数c 如果是2 a b c形式,表示询问从第a个位置到第b个位置,第C大的数是多少. N,M<=50000,N,M<=50000 a<=b<=N 1操作中abs(c)<=N 2操作中c<=Maxlongint 思路:这道题如果外层是位置的话就需要在外层区间更新 并不会写 所以需要外层权值,内层位置 然而常数太渣,BZOJ上过不去 并不想(会)写标记永…
用主席树写起来跑的快一点,而且也很傻比,二分答案,即二分那个半径就行 主席树求的是区间<=k的个数 #include<bits/stdc++.h> using namespace std; #define maxn 1000005 int a[maxn],n,m; ]; int rt[maxn],tot; int update(int last,int l,int r,int pos){ int now=++tot; t[now]=t[last]; t[now].v++; if(l==r…
题意 http://uoj.ac/problem/291 思路 不难发现,九条カレン醬所写的树状数组,在查询区间 \([1,r]\) 的时候,其实在查询后缀 \([r,n]\) :在查询 \([l,r](l\neq1)\) 的时候,则是在查询 \([l-1,r-1]\) .那么在查询 \([1,r]\) 的时候,只需要询问 \(r\) 的前后缀异或是否相等:在查询 \([l,r](l\neq 1)\) 的时候,只需要询问 \(a[l-1],a[r]\) 是否相等. 考虑 \(O(n^2)\) 的…
题目传送门:https://www.lydsy.com/JudgeOnline/problem.php?id=4552 题意:给出一个$1$到$N$的全排列,对其进行$M$次排序,每次排序将区间$[l,r]$从小到大或从大到小排序,求排序完后位置$q$上的数字.$N,M \leq 10^5$,时限$6s$ 名字挂羊头卖狗肉…… 暴力排序$O(NMlogN)$神级常数才能过,故考虑在排序上降低复杂度 考虑二分答案,将小于等于当前答案的设为$0$,大于当前答案的设为$1$,这样修改就变成$0,1$排…