
【算法】点分治
文章平均质量分 68
cz_xuyixuan
这个作者很懒,什么都没留下…
展开
-
【BZOJ3435】【UOJ55】【WC2014】紫荆花之恋
【题目链接】BZOJUOJ【思路要点】考虑点\(i\)和点\(j\)路径上任意一点\(k\),那么$$R_{i}+R_{j}≥Dist(i,j) \Leftrightarrow R_{i}-Dist(i,k)≥Dist(j,k)-R_{j}$$令\(F_{i,k}=R_{i}-Dist(i,k)\),即\(F_{i,k}≥-F_{j,原创 2018-01-13 13:18:33 · 1333 阅读 · 0 评论 -
【CodeForces】CodeForces Round #400 (Div. 1 + Div. 2) 题解
【比赛链接】 点击打开连接 【题解链接】 点击打开链接 **【A】**A Serial Killer【思路要点】 维护两个字符串模拟。 时间复杂度O(N)O(N)O(N)。 【代码】 #include<bits/stdc++.h>using namespace std;const int M...原创 2018-08-02 18:22:36 · 360 阅读 · 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 评论 -
【BZOJ2117】【2010国家集训队】Crash的旅游计划
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 100005template <typename T> void read(T &x) { x = 0; int f = 1; char c = getchar(); for (; ...原创 2018-05-22 14:45:34 · 293 阅读 · 0 评论 -
【BZOJ2051】A Problem For Fun
【题目链接】点击打开链接【三倍经验链接】【BZOJ2117】【2010国家集训队】Crash的旅游计划【BZOJ4317】Atm的树【思路要点】二分答案,在点分树内查询小于答案的路径条数。时间复杂度\(O(NLog^3N)\)。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 100005template &l...原创 2018-05-25 20:08:20 · 323 阅读 · 0 评论 -
【BZOJ4317】Atm的树
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 100005template <typename T> void read(T &x) { x = 0; int f = 1; char c = getchar(); for (; ...原创 2018-05-21 20:10:36 · 342 阅读 · 0 评论 -
【BZOJ1095】【ZJOI2007】Hide 捉迷藏
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 100005struct info {int home, value; };bool operator < (info a, info b) { return a.home < b.home ...原创 2018-03-25 18:11:04 · 246 阅读 · 0 评论 -
【CodeForces】CodeForces Round #467 (Div. 1 + Div. 2) 题解
【比赛链接】Div.1Div.2【题解链接】点击打开链接【Div.2 A】Olympiad【思路要点】答案为原数集中除去所有0以外数的种类数,哈希计数即可。时间复杂度\(O(N+Max\{a_i\})\)。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 1005;template <typena...原创 2018-03-05 20:29:18 · 376 阅读 · 0 评论 -
【BZOJ3672】【UOJ7】【NOI2014】购票
【题目链接】BZOJUOJ【思路要点】令\(f_i\)表示从\(i\)出发到根节点的最小花费,\(s_i\)表示根节点到节点\(i\)的路径长度之和。那么,显然有方程:$$f_i=min_{s_i-l_i≤s_j}\{f_j+(s_i-s_j)p_i+q_i\}$$$$f_i=min_{s_i-l_i≤s_j}\{f_j-s_jp_i\}+s_ip_i+q_i$$其中\(j\)是\(i\)的一个祖...原创 2018-03-01 15:24:13 · 343 阅读 · 0 评论 -
【BZOJ2152】聪聪可可
【题目链接】点击打开链接【思路要点】点分治模板题。时间复杂度\(O(NLogN)\)。【代码】#include<bits/stdc++.h>using namespace std; #define MAXN 200005struct edge {int dest, len; }; vector <edge> a[MAXN]; int n, ans, root; ...原创 2018-02-25 16:23:15 · 255 阅读 · 0 评论 -
【BZOJ2599】【IOI2011】Race
【题目链接】点击打开链接【思路要点】点分治模板题。时间复杂度\(O(NLogN+K)\)。【代码】#include<bits/stdc++.h>using namespace std; #define MAXN 200005#define MAXK 1000005struct edge {int dest, len; }; vector <edge> a[MAXN...原创 2018-02-28 09:05:53 · 245 阅读 · 0 评论 -
【BZOJ3697】采药人的路径
【题目链接】点击打开链接【思路要点】点分治,把黑点当-1,白点当1,同一根节点处的两条链能够拼成一条合法路径当且仅当它们权值相加为0且至少其中一条路径经过过两次自己的权值。时间复杂度\(O(NLogN)\)。【代码】#include<bits/stdc++.h>using namespace std; #define MAXN 100005struct edge {int des...原创 2018-02-28 12:59:26 · 336 阅读 · 0 评论 -
【BZOJ1758】【WC2010】重建计划
【题目链接】点击打开链接【思路要点】首先,题目要求求解平均值的最大值,考虑分数规划。二分答案\(Mid\),将树上每条边权减去\(Mid\),问题变为树上是否存在边数在\(L\)到\(R\)之间的权值之和非负的路径。考虑点分治。记录\(Dist\)数组,\(Dist_{i}\)表示边数为\(i\)的从分治根节点出发的路径的最大权值。对于每一个分治子树进行BFS,记当前BFS深度为\(i\),在\(原创 2018-01-18 13:57:28 · 450 阅读 · 0 评论 -
【CodeForces】CodeForces Round #406 (Div. 1) 题解
【比赛链接】点击打开连接【题解链接】点击打开链接**【A】**Berzerk【思路要点】博弈搜索,将状态按先后手拆点,建出游戏图。若一个点存在出边指向必败态,则该点为必胜态。若一个点所有出边指向必胜态,则该点为必败态。不满足上述两点的点为平局态。用一个类似拓扑排序的过程实现即可。时间复杂度 O(N2)O(N^2)O(N2) 。【代码】#inclu...原创 2018-09-27 18:13:18 · 354 阅读 · 0 评论