最小生成树
文章平均质量分 61
ff_666
开心最好。。但现在正是奋起之时!!!
展开
-
LOJ137(LOJ6021)
LOJ137 这题,真心整死人。。 首先,国家集训队论文里有一篇有关文章: 郭华阳 RMQ与LCA问题 然后有一个定理: 两点间最小瓶颈路一定是最小生成树上两点间唯一路径上的最大边 所以先求原图的最小生成树,这题就变成求树上两点间唯一路径上的最大边了 然后倍增?O(10000000∗log)O(10000000∗log)O(10000000*log)?T到飞起。。再怎么...原创 2018-08-23 10:48:18 · 730 阅读 · 0 评论 -
LOJ10064
LOJ10064 首先,Di=DSTiDi=DSTiD_i=DST_i(PRIM中) 所以可以先求一趟PRIM 再根据乘法原理来统计,连乘到达每个点的答案 #include<bits/stdc++.h> #define LL long long #define gt() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1000000,st...原创 2018-08-23 15:40:18 · 245 阅读 · 0 评论 -
LOJ10065
LOJ10065 先求一趟正常的PRIM 贪心想法,显然是将后大的几个给卫星,然后就OK了 #include<bits/stdc++.h> #define gt() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1000000,stdin),p1==p2)?EOF:*p1++) #define D(i,j) ((a[i].x-a[j].x...原创 2018-08-23 16:05:29 · 407 阅读 · 0 评论 -
LOJ10066
LOJ10066 将建井看成是向“0”号节点连边,然后正常写最小生成树就好了。。 稠密图,PRIM快 #include<bits/stdc++.h> #define gt() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1000000,stdin),p1==p2)?EOF:*p1++) using namespace std; stat...原创 2018-08-23 16:14:12 · 178 阅读 · 0 评论 -
LOJ10067
LOJ10067 由原树,生成唯一的最小完全图—— 类似Kruscal的想法: 初始时将每个节点理解为自成一个联通块,按边权从小到大处理,每次合并联通块: 设当前连X与Y,X所在联通块有cnt[fx]个节点,Y所在有cnt[fy]个 两块连接后,由于要构成完全图,显然有(cnt[fx]*cnt[fy]-1)条边(除去已连的一条) 至于代价,由于要保证生成的完全图中最小生成树不变,自然边...原创 2018-08-23 16:21:17 · 155 阅读 · 0 评论 -
LOJ10069(BZOJ2654)
LOJ10069 我们考虑Kruscal,显然边权越小越早被考虑 所以白边的边权变小后,所能加进最小生成树的边数绝对不会变少(感性理解,有很大几率变多。。) 所以我们就可以二分“每条白边的增量(可以为负)” 每次求出当前最小生成树后,更新的答案要减去need*mid ——如果有超过need条白边被用,超过的那部分一定能用黑边顶替,因为题目保证一定有恰好的解。。 #include&amp;l...原创 2018-08-24 13:39:00 · 185 阅读 · 0 评论 -
LOJ10070(BZOJ1016)(JSOI 2008)
LOJ10070 这题,需要知道最小生成树三定理 然后就很简单了。。 对于每种相同边权进行2102102^{10}的枚举,乘法原理统计答案。。 #include<bits/stdc++.h> #define gt() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1000000,stdin),p1==p2)?EOF:*p1++) usi...原创 2018-08-24 15:04:08 · 163 阅读 · 0 评论