----生成树问题
扩展的灰
扩展的灰(Extended Ash)
展开
-
Jzoj3806 小X 的道路修建
给你一个图,求一个最大边和最小边差值最小的生成树首先我们可以枚举最小边,每次跑一个最小生成树即可但是这样会超时,我们考虑优化采用最优性剪枝,假设我们当前树中的最小边是i,当前边是j,当前最优答案是ans,那么对于所有边k使得Length(j)-Length(k)>Ans的边在枚举最小边的时候可以直接跳过,下一次直接从k+1开始枚举,这样就可以优化时间复杂度,期望100分当然这不是正原创 2017-10-02 11:53:12 · 400 阅读 · 0 评论 -
Jzoj4625 树
如果∑d≠2n-2说明错了否则,我们先构造出这棵树的直径,若一个di>2则我们将d-2个节点与其相连,所以answer=n-1-∑(max(2,d[i])-2)#includeinline int max(int a,int b){ return a>b?a:b; }int main(){ int n,d[20],ds=0,m; scanf("%d",&n); for(int原创 2017-10-11 21:23:35 · 274 阅读 · 0 评论 -
Jzoj5445【NOIP2017提高A组冲刺11.2】失格
胆小鬼连幸福都会害怕,碰到棉花都会受伤,有时还被幸福所伤。——太宰治《人间失格》 回顾我的一生,一共有n个事件,每一个事件有一个幸福值p_i。我想用n-1条线把所有的事件连起来,变成一个连通块。一条连接了事件x和事件y的线会产生min(p_x mod p_y,p_y mod p_x)的喜悦值。日日重复同样的事,遵循着与昨日相同的惯例,若能避开猛烈的狂喜,自然也不会有悲痛的来原创 2017-11-02 20:09:23 · 389 阅读 · 0 评论 -
一些基础算法的模板(持续更新)
更新中//Templates From Extended_Ash/Cooevjnz/JacaJava/Tubbcrafft//To be continued...//Suffix Automationchar str[N]; int s[N][26],mx[N],f[N],sz[N]; int last=1,cnt=1,n,v[N],r[N],ans=0; inlin原创 2017-10-25 22:05:58 · 3734 阅读 · 0 评论 -
51Nod1601 完全图的最小生成树计数
题目看这里这个题好像在哪里做过。。。但是翻不到基本思想:在最高位不同的两个集合里只能有一条边相连我们可以用trie来做,每次到一个节点,就在他的两个儿子里找xor值最小的加到答案里若有超过2个权值相同的点时,计算方案的方法为x^(x-2),这个是完全图的生成树个数公式无压力·真rank1#include#include#include#define N 10001原创 2018-02-22 22:29:28 · 498 阅读 · 0 评论