
【数据结构】虚树
文章平均质量分 90
cz_xuyixuan
这个作者很懒,什么都没留下…
展开
-
【BZOJ3572】【HNOI2014】世界树
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 300005#define MAXLOG 20#define INF 1000000000struct info {int pos, dist; };info dmin[MAXN], dnim[MAXN...原创 2018-03-15 10:39:10 · 293 阅读 · 0 评论 -
【2019 江苏省队集训】Day2 解题报告
【T1】 朝夕相处【思路要点】记不考虑旋转同构的答案为 G(N)G(N)G(N),答案为F(N)F(N)F(N),由BurnsideBurnsideBurnside引理,有F(N)=∑i∣NG(i)φ(Ni)NF(N)=\frac{\sum_{i\mid N}G(i)\varphi(\frac{N}{i})}{N}F(N)=N∑i∣NG(i)φ(iN)剩余问题在于计算 G(N)G(...原创 2019-07-03 13:30:13 · 991 阅读 · 0 评论 -
【LOJ3046】「ZJOI2019」语言
【题目链接】点击打开链接【思路要点】考虑枚举最终路径的一端 xxx ,那么路径的另一端 yyy 应当在所有过 xxx 的路径的并上,也即这些路径两端所有点形成的虚树上,因此,我们需要知道这个虚树的大小。注意到虚树大小即为将点按照 dfsdfsdfs 序环形排列后相邻的点在原树上距离和的一半,可以用线段树维护 dfsdfsdfs 序,记录区间最左、最右侧的点,以及区间相邻点的距离...原创 2019-06-14 16:42:27 · 713 阅读 · 0 评论 -
【省内训练2018-12-21】Connection
【思路要点】首先考虑某一种颜色,若该颜色在各连通块中的出现次数为 {x1,x2,...,xm}\{x_1,x_2,...,x_m\}{x1,x2,...,xm} ,则该颜色对答案的贡献应为 ∑i=1m∑j=i+1mxi∗xj=(∑i=1mxi)2−∑i=1mxi22\sum_{i=1}^{m}\sum_{j=i+1}^{m}x_i*x_j=\frac{(\sum_{i=1}^{m}x_...原创 2018-12-22 18:17:50 · 187 阅读 · 0 评论 -
【CodeChef】Adjacent Leaves
【题目链接】点击打开链接【思路要点】首先考虑一种 O(N)O(N)O(N) 处理一个询问的方法,我们以 RRR 为根,进行 dfsdfsdfs 。我们称一个存在关键叶子的子树为“满的”,当且仅当该子树中叶子结点的数量等于关键叶子的数量,称一个子树为“不满的”,当且仅当该子树中存在关键叶子,并且它不是满的。若一个点 xxx 存在三个或以上不满的子树,那么显然我们不可能将其安排至...原创 2018-12-09 13:17:47 · 341 阅读 · 0 评论 -
【51Nod2004】终结之时
【题目链接】点击打开链接【思路要点】建出 支配树 ,剩余的操作均可以通过轻重链剖分+线段树解决。时间复杂度 O(QLog2N+M)O(QLog^2N+M)O(QLog2N+M) 。另外,等到笔者写完可持久化后才发现这个题的可持久化是假的,只需要将之前进行的操作减回去即可,这样做空间复杂度就不会高达 O(NLog2N)O(NLog^2N)O(NLog2N) 了。但可持久化的版本...原创 2018-09-20 12:35:56 · 390 阅读 · 0 评论 -
【BZOJ5152】【UOJ347】【WC2018】通道
【题目链接】BZOJ UOJ【思路要点】首先,我们来考虑只有两棵树的情况。 我们枚举两个点在第一棵树上的LCA,那么这两个点应该位于LCA的不同的子树中,点对\((x,y)\)的价值应当为\(deptha_x+deptha_y-2*deptha_{Lca}+distb(x,y)\)。 对于第二棵树上的每一个点\(x\),新建\(x'\)与其相连,边权为\(deptha_x\...原创 2018-06-07 15:05:10 · 527 阅读 · 0 评论 -
【BZOJ5329】【SDOI2018】战略游戏
【题目链接】点击打开链接【思路要点】建立原图的圆方树。对于每个询问,建立其询问点集的虚树,分别考虑虚树的每一个点和每一条边上的圆点是否能够作为答案。简单树形DP即可。时间复杂度\(O(T(N+\sum S)LogN)\)。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 200005;const int...原创 2018-05-31 13:42:54 · 363 阅读 · 0 评论 -
【BZOJ3879】SvT
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 1000005#define MAXM 3000005#define MAXLOG 22template <typename T> void read(T &x) { x = 0; ...原创 2018-05-21 16:54:56 · 367 阅读 · 0 评论 -
【CodeForces】CodeForces Round #477 (Div. 1 + Div. 2) 题解
【比赛链接】Div. 1Div. 2【题解链接】点击打开链接【Div.2 A】Mind the Gap【思路要点】从小到大枚举答案,检查合法性。时间复杂度\(O(Ans*N)\)。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 100005;template <typename T> vo...原创 2018-05-07 20:04:26 · 1694 阅读 · 1 评论 -
【BZOJ3991】【SDOI2015】寻宝游戏
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 100005#define MAXLOG 20struct edge {int dest; long long len; };struct info {int value; };vector <e...原创 2018-03-14 15:56:44 · 270 阅读 · 0 评论 -
【BZOJ3611】【HEOI2014】大工程
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 1000005#define MAXLOG 20#define INF 1e9vector <int> a[MAXN], b[MAXN];bool mark[MAXN];long long...原创 2018-03-14 15:03:16 · 255 阅读 · 0 评论 -
【BZOJ2286】【SDOI2011】消耗战
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 250005#define INF 1e9#define INFP 1e18#define MAXLOG 20struct edge {int dest, len;};vector <edge&...原创 2018-03-13 18:34:29 · 262 阅读 · 0 评论 -
【LOJ2722】「NOI2018」情报中心
【题目链接】点击打开链接【思路要点】考虑特殊性质 S2S2S2 ,如下图,可以发现两条蓝-绿路径形成的链并的大小的两倍为 两条链长之和 +++ 蓝点之间的距离 +++ 绿点之间的距离 。枚举蓝点的 LcaLcaLca ,即图中的红点,那么我们需要选出两个不属于同一个红点的子树的蓝点 a,ba,ba,b ,使得它们对应的绿点 pa,pbp_a,p_bpa,pb 满足最大的总...原创 2019-06-27 20:33:28 · 770 阅读 · 0 评论