摘要: 个人认为这周题中较难的一道。 题意大概为:给定一张N个点M条边的无向图,求出无向图的一棵最小生成树,满足一号节点的度数不超过给定的整数K。保证 N <= 20 首先用map存取节点,之后抛去1号节点,求每一个联通分量的MST,就得到了一个局部最优解,设p为联通块的个数,接下来从每一个联通分量中找一个 阅读全文
posted @ 2019-07-11 20:32 shao0320 阅读(197) 评论(0) 推荐(0) 编辑
摘要: 给定一棵n个点的图上的最小生成树,让你把它补成完全图,使得新图的MST还是给定的MST且边权和最小,输出需要增加的边权和。 设size[i]表示以i号为祖先的并查集的大小。 首先按边权排序,之后在做MST的过程中,答案cnt+=(size[v]*size[u]-1)*(w+1),来解释一下这个式子, 阅读全文
posted @ 2019-07-11 20:21 shao0320 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 标算是贪心,我写了个差分约束????? 设dist[i]表示1-i号土地种的树的总棵数,考虑以下几种约束条件: 1)dist[y]>=dist[x]+z,即x号土地至y号土地间至少种了z棵树 2)dist[i-1]>=dist[i]-1,即i号土地最多比i-1号土地多种1棵树 3)dist[i]>= 阅读全文
posted @ 2019-07-11 07:59 shao0320 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 新建一个虚拟节点后直接跑最小生成树即可,从虚拟节点往每个节点连的边权为每个点建发电站的代价,许多人的考场贪心策略是:先构建原图的最小生成树后找一个花费最小的地方建发电厂。但是这样做不对的地方在于:如果每个地方的点权很小但是一些边的边权十分大,就不如多建几个发电厂核算,因此新建虚拟节点就是考虑到了这种 阅读全文
posted @ 2019-07-08 21:54 shao0320 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 这题主要考察对“卫星电话”的理解,k个卫星电话相当于可以让k个联通块保持联通,因此我们只需要让原图连成k个联通块,然后给每个联通块的任意一个节点发一部卫星电话即可。因此我们需要连n-k条边,特别地,当k=0时只需要连n-1条边 一定要好好读题!!!题目要求求边权的最大值,毒瘤样例求最大值,最小值,边 阅读全文
posted @ 2019-07-08 21:46 shao0320 阅读(266) 评论(0) 推荐(0) 编辑
摘要: 因为D[i]表示i号节点到1号节点的最短路径,所以可以先以1为源点跑一边SPFA,预处理出每个点到1号节点的最短路。之后开始考虑所谓的“最短路径生成树”,在这棵生成树中有以下性质:当fa[i]==node时,必满足dist[node]+w(node,i)=dist[i],但是dist[node]+w 阅读全文
posted @ 2019-07-08 21:38 shao0320 阅读(223) 评论(0) 推荐(0) 编辑
摘要: 题目传送门 省选D2T3考板子可真是不多见呢。。。。~~~ 这题就是一个裸的树链剖分,对于每一个Add操作,维护从u至v的路径,对于每一个Query操作,询问以u为根的子树之和。如果不会树链剖分可以看我的往期博客,具体细节在代码之中就不多赘述了~ 下面给出参考代码: 1 #include<iostr 阅读全文
posted @ 2019-07-07 08:26 shao0320 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 树链剖分用来解静态树上维护路径信息的问题,例如:给定一颗点带权的树,每次去修改某条路径上所有点的点权,或是求某条路径上的点权之和,当这棵树的形态为一条链时,这实际上就是一个区间修改求和的问题,可以用线段树等数据结构方便地求解。对于其他的情况,由于树的形态不变,因此树链剖分的策略是把这棵树恰当的剖分为 阅读全文
posted @ 2019-07-04 14:44 shao0320 阅读(228) 评论(0) 推荐(0) 编辑
摘要: 洛谷上的翻译是真的哲学♂♂♂ 非常van的题目传送门♂♂♂ 个人认为这题充其量也就是个蓝(nan)题,首先处理-1的情况,-1的情况是不等式组无解,按照差分约束的规则,无解说明出现了负环,先跑一遍以0为源点的SPFA判断有无负环即可。再来处理-2的情况,结果为-2就说明1号和n号节点不存在直接的或间 阅读全文
posted @ 2019-06-26 20:20 shao0320 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 题目传送门 差分约束系统很棒的应用,首先运用前缀和的思想,令s[k]为0~k中被选出来数的个数,则s[b[i]]>=s[a[i]-1]+c,这样会有一个问题,那就是下标可能会出现负数,因此我们可以改变前缀和表示的方法,设s[k]为0~k-1中被选出来的数,则约束条件可以转化为:s[b[i]+1]-s 阅读全文
posted @ 2019-06-25 20:35 shao0320 阅读(156) 评论(0) 推荐(0) 编辑
****************************************** 页脚Html代码 ******************************************