主站
DreamJudge
院校信息
专业题库
模拟考试
机试真题
专业课程
答疑区
兑换中心
登录
注册
上岸
goldstine
这个人很懒,什么都没有写...
关注
发消息
文章
25
题解
0
发帖
1
笔记
0
Ta的粉丝
407
关注数
0
粉丝数
407
获赞数
0
阅读数
333764
树的重心
树的重心:对于一颗n个节点的无根树,找到一个点,使得把树变成以该节点为根的有根树时,最大子树的节点数最小,也就是说删除这个点后最大联通块的节点数最小。 如果要以i为重心的话,那么其最大子树的节点数就是max(max(dp[j]), n - dp[i]),其中j为i的孩子节点。 树的...
经验总结
2020年4月21日 23:12
回复 0
|
赞 0
|
浏览 12.6k
分块算法
分块:将查询的区间按照左指针按快排序,如果在同一个块中,则按照右指针区间得大小从小到大排序。 左指针l=1,r=0;将左指针移动sqrt(n),右指针n,故O(nsqrt(n)): Q:小Z的袜子: #include<iostream> #inc...
经验总结
2020年4月21日 21:26
回复 0
|
赞 0
|
浏览 11.7k
分块(磁力块)
分块+bfs: #include<iostream> #include<algorithm> #include<queue> using namespace std; const int N = (int)2e6; const...
经验总结
2020年4月21日 17:44
回复 0
|
赞 0
|
浏览 12.2k
树状数组+二分
有n头奶牛,已知它们的身高为 1~n 且各不相同,但不知道每头奶牛的具体身高。 现在这nn头奶牛站成一列,已知第i头牛前面有AiAi头牛比它低,求每头奶牛的身高。 输入格式 第1行:输入整数nn。 第2..n行:每行输入一个整数AiAi,第i行表示第i头牛前面有AiAi头牛...
经验总结
2020年4月21日 00:23
回复 0
|
赞 0
|
浏览 13.3k
树状数组(区间修改&区间查询)
给定一个长度为N的数列A,以及M条指令,每条指令可能是以下两种之一: 1、“C l r d”,表示把 A[l],A[l+1],…,A[r] 都加上 d。 2、“Q l r”,表示询问 数列中第 l~r 个数的和。 ...
经验总结
2020年4月20日 23:36
回复 0
|
赞 0
|
浏览 13.0k
树状数组(区间修改&单点查询)
给定长度为N的数列A,然后输入M行操作指令。 第一类指令形如“C l r d”,表示把数列中第l~r个数都加d。 第二类指令形如“Q X”,表示询问数列中第x个数的值。 对于每个询问,输出一个整数表示答案。 #incl...
经验总结
2020年4月20日 22:53
回复 0
|
赞 0
|
浏览 12.5k
树状数组(求逆序对)
树状数组用于动态维护数组(矩阵)的前缀和,异或和,最大值,最小值。 (1)利用树状数组求逆序对O(nlogn) 楼兰图腾:y1~yn是1~n的一个全排列: #include<iostream> #include<cstring> using n...
经验总结
2020年4月20日 22:19
回复 0
|
赞 0
|
浏览 12.9k
种类并查集(食物链)
向量: #include<iostream> using namespace std; const int N = 50010; int d[N], father[N]; int n, k; int find(int x){ if (x == father[...
经验总结
2020年4月20日 00:42
回复 0
|
赞 0
|
浏览 10.7k
边带权并查集
银河英雄传说: #include<iostream> #include<cmath> using namespace std; int n; const int N = 31010; int father[N], d[N], size[N]; in...
经验总结
2020年4月19日 22:19
回复 0
|
赞 0
|
浏览 11.7k
并查集+离散化
程序自动分析: (1)并查集(路径压缩)+离散化(数据过大): #include<iostream> #include<vector> #include<algorithm> using namespace std; const in...
经验总结
2020年4月19日 00:59
回复 0
|
赞 0
|
浏览 12.1k
阶乘分解-(素数线性筛)
①先筛选出1~N的每个质数p ②N!中质因子p的个数为: floor(N/p)+floor(N/p2)+floor(N/p3)+…+floor(N/pfloor(logpN))=Σ(pk≤N)floor(N/pk) 时间复杂度:O(NlogN) ...
经验总结
2020年4月18日 22:57
回复 0
|
赞 0
|
浏览 12.6k
博弈-SG函数(cutting game )
SG函数的模板: //f[N]:可改变当前状态的方式,N为方式的种类,f[N]要在getSG之前先预处理 //SG[]:0~n的SG函数值 //S[]:为x后继状态的集合 int f[N],SG[MAXN],S[MAXN]; void getSG(int n){ ...
经验总结
2020年4月18日 22:24
回复 0
|
赞 0
|
浏览 11.7k
Tarjan-无向图的割点
B城: #include<iostream> #include<algorithm> #include<cstring> using namespace std; const int N = 1e6 + 200; long long h[...
经验总结
2020年4月18日 00:46
回复 0
|
赞 0
|
浏览 12.1k
Tarjan求有向图连通分量
time = 1; dfn[N] = { 0 }, low[N] = { 0 }; void dfs(int x){ stack.push(x); dfn[x] = low[x] = time++; for (int y = 0; y < n; ...
经验总结
2020年4月17日 22:13
回复 0
|
赞 0
|
浏览 11.6k
二分图匹配-車的位置
将行作为一个集合,将列作为另一个集合,进行二分图匹配,匹配数即匹配的边作为車的位置。 #include<iostream> using namespace std; const int N = 210; int g[N][N], match[N], n, m, t;...
经验总结
2020年4月17日 00:22
回复 0
|
赞 0
|
浏览 13.0k
二分图的最大匹配-棋盘覆盖
二分图的最大匹配:匈牙利算法 int n1, n2; int h[N], next_pos[N], e[N], idx; int match[N]; bool st[N]; bool find(int x){ for (int i = h[x]; i; i = next_...
经验总结
2020年4月16日 23:44
回复 0
|
赞 0
|
浏览 13.1k
二分图+二分
#include<iostream> #include<cstring> using namespace std; const int N = 20010; const int M = 200010; int h[N], e[M], next_pos[M]...
经验总结
2020年4月16日 21:36
回复 0
|
赞 0
|
浏览 11.7k
二分图判定
二分图等价定义:不含奇数条边的环。 染色法: (1)dfs,链式前向星 #include<iostream> using namespace std; const int N = 1010; int h[N], e[N], next_pos[N], n,...
经验总结
2020年4月15日 23:42
回复 0
|
赞 0
|
浏览 12.3k
树的直径应用
Description:一棵树,添加k条边使得遍历所有的点的总代价最小,其中1<=k<=2; 不建道路,路线总长度2*(n-1); 当k等于1,此时的最优解无疑是将边加到直径两端;那么答案就是2*(n-1)-d+1;其实考虑k=2时,对于一棵树,我们加边会形成一个环,加...
经验总结
2020年4月14日 23:39
回复 0
|
赞 0
|
浏览 9.9k
树的直径
树的直径:树中所有最短路径的最大值。(1)树状dp(得到直径值);(2)若无负权边,2次DFS(BFS)得到直径值和最长链) (1)在一个连通无向无环图中,以任意结点出发所能到达的最远结点,一定是该图直径的端点之一。 (2)树的直径,等于以树直径上任意一点为根的有根树,其左子树的高...
经验总结
2020年4月14日 21:04
回复 0
|
赞 0
|
浏览 13.5k
1
2
本科学校:MIT
目标学校:ll
点此申请N诺身份认证
获得 noobdream 认证,享受多重认证福利!