10 2017 档案
摘要:#include<bits/stdc++.h> using namespace std; struct edge{ int sta,ed,val,jump; }a[1000005]; int n,m,jump[1000005],tot,line[1000005],point[1000005],jud
阅读全文
摘要:先贴上原题的链接 ◄传送门► 题目大意是给定一个无根树,使得去掉一个点之后,剩下子树的节点数的最大值最小,也就是求树的重心。求树的重心的话,只需要设一个点为跟,然后递归下去,求出son[i](表示以i为根节点的子树的节点数量)以及除了以此节点为根节点的子树的剩下的节点数,用f数组来表示。然后让max
阅读全文
摘要:让我们先附上原题链接 ◄传送门► 这个题目的题意翻译过来差不多就是求树上每一个节点在树上的最远距离。其实这题目有两个做法一个是求树的直径,一个是用树形dp,但是这里只说树形dp的方法,求直径的方法思路还是比较简单的。 对于树形dp我们有以下的思路,对于一个节点root在树上的最长路径,有两种可能。一
阅读全文
摘要:滑稽滑稽,这次我们来讲讲线性筛素数,让我们先上代码。 嗯,好接下来我们来看一下这个代码,意外的很短,但是理解起来还是有点难度的,但是其实重点就只是在那一条蓝色的语句上。为什么当i是sushu[l]的倍数时就break呢? 证: ∵ i%sushu[l]==0 ∴ i=k*sushu[l] ∴ i*s
阅读全文
摘要:这个树剖的代码写的我好绝望啊……两棵树傻傻搞不清。 写了两天的树剖 我脑子都快被剖开来了!!! (超级想要引用这句话的,充分体现了我的绝望) 好,怒吼完毕,接下来来讲一下代码。(现在想想搞树剖也许是一个错误的决定,要不是因为某天天爱跑步我才不会来搞树剖呢)其实这个树剖把……思想是挺简单的,但是主要是
阅读全文
摘要:题目原址在下面: ◄传送门► 题目大意:n个点m条边每次询问两点之间路径的最小值的最大值。 思路:先跑一遍Kruskal,将边权从大到小排序,然后选n-1条边。之后跑倍增LCA。
阅读全文
摘要:inline int read(){ int rem=0,f=1; char cha=getchar(); while(cha>'9'||cha<'0'){ if(cha=='-'){ f=-1; } cha=getchar(); } while(cha<='9'&&cha>='0'){ rem=r
阅读全文
摘要:n个节点,m个询问,root为根节点,fa[i][j]表示i的第2j个祖先
阅读全文
摘要:n个点,m条有向边(color相同的就可以缩成一个点了)
阅读全文
摘要:没错是的,终于是放下了心中的一块石头,过了初赛了。庆祝一下庆祝一下。好,那不说废话,上主题。主席树,问题是有T个序列,每个序列分别有ni个数对于每个序列mi次询问,每次询问有l,r,k,表示求在序列中l到r区间的第k大的数输入:第一行T表示有T个序列,然后有n,m分别表示序列有n个数,m次询问,接下
阅读全文
摘要:<windows.h> 指令: Sleep(1000) 屏幕暂停1000毫秒 system("cls") 清空屏幕 函数: void gotoxy(int y,int x){ COORD pos; pos.X=2*x; pos.Y=y; SetConsoleCursorPosition(GetStd
阅读全文

浙公网安备 33010602011771号