洛谷P3905 道路重建】的更多相关文章

P3905 道路重建 题目描述 从前,在一个王国中,在n个城市间有m条道路连接,而且任意两个城市之间至多有一条道路直接相连.在经过一次严重的战争之后,有d条道路被破坏了.国王想要修复国家的道路系统,现在有两个重要城市A和B之间的交通中断,国王希望尽快的恢复两个城市之间的连接.你的任务就是修复一些道路使A与B之间的连接恢复,并要求修复的道路长度最小. 输入输出格式 输入格式: 输入文件road.in,第一行为一个整数n(2<n≤100),表示城市的个数.这些城市编号从1到n.第二行为一个整数m(n…
P3905 道路重建 题目描述 从前,在一个王国中,在\(n\)个城市间有\(m\)条道路连接,而且任意两个城市之间至多有一条道路直接相连.在经过一次严重的战争之后,有\(d\)条道路被破坏了.国王想要修复国家的道路系统,现在有两个重要城市\(A\)和\(B\)之间的交通中断,国王希望尽快的恢复两个城市之间的连接.你的任务就是修复一些道路使\(A\)与\(B\)之间的连接恢复,并要求修复的道路长度最小. 输入格式 输入文件第一行为一个整数\(n(2<n≤100)\),表示城市的个数.这些城市编号…
题目描述 从前,在一个王国中,在n个城市间有m条道路连接,而且任意两个城市之间至多有一条道路直接相连.在经过一次严重的战争之后,有d条道路被破坏了.国王想要修复国家的道路系统,现在有两个重要城市A和B之间的交通中断,国王希望尽快的恢复两个城市之间的连接.你的任务就是修复一些道路使A与B之间的连接恢复,并要求修复的道路长度最小. 输入输出格式 输入格式: 输入文件road.in,第一行为一个整数n(2<n≤100),表示城市的个数.这些城市编号从1到n.第二行为一个整数m(n-1≤m≤n(n-1)…
题目:https://www.luogu.org/problemnew/show/P3905 分析: 此题是显然的最短路算法,只是看到一起删掉的一堆边感到十分棘手,而且还要求出的是最短添加边的总长度 但如果仔细观察就可以发现,我们其实并不用一个一个的全部枚举,只需要把添加的边做最短路就行了. 我们可以首先把数组初始化为一个较大的数,然后每读入一条边,就把此边的权值记录,但还要把它清零. 为什么呢? 因为我们清零相当于不考虑此边的权值,但又可以经过这条边,有效的能保留下删去的边,来仅仅考虑被删边的…
P3905 道路重建我一开始想错了,我的是类似kruskal,把毁坏的边从小到大加,并且判断联通性.但是这有一个问题,你可能会多加,就是这条边没用,但是它比较小,你也加上了.居然还有10分,数据也是水水的... #include<iostream> #include<cstdio> #include<queue> #include<algorithm> #include<cmath> #include<ctime> #include&…
洛谷P4198 楼房重建 题目描述 小A的楼房外有一大片施工工地,工地上有N栋待建的楼房.每天,这片工地上的房子拆了又建.建了又拆.他经常无聊地看着窗外发呆,数自己能够看到多少栋房子. 为了简化问题,我们考虑这些事件发生在一个二维平面上.小A在平面上(0,0)点的位置,第i栋楼房可以用一条连接(i,0)和(i,Hi)的线段表示,其中Hi为第i栋楼房的高度.如果这栋楼房上任何一个高度大于0的点与(0,0)的连线没有与之前的线段相交,那么这栋楼房就被认为是可见的. 施工队的建造总共进行了M天.初始时…
P1359 租用游艇   原题链接https://www.luogu.org/problemnew/show/P1359 P3905 道路重建   原题链接https://www.luogu.org/problemnew/show/P3905 这两道题我觉得都是Floyd算法的应用,所以我就放在一块来写了,毕竟A这两道题的时间间隔比较短: P1359 租用游艇 对于这个题,一开始被这个半矩阵惊到了-------主要是不知道这个矩阵是什么意思,过了好长时间(2min)才明白是到其他游艇的距离. 我…
洛谷P1119-灾后重建 题目描述 给出\(B\)地区的村庄数NN,村庄编号从\(0\)到\(N-1\),和所有\(M\)条公路的长度,公路是双向的. 给出第\(i\)个村庄重建完成的时间\(t_i\),你可以认为是同时开始重建并在第\(t_i\)天重建完成,并且在当天即可通车.若\(t_i=0\)则说明地震未对此地区造成损坏,一开始就可以通车. 之后有\(Q\)个询问\((x,y,t)\),对于每个询问你要回答在第\(t\)天,从村庄\(x\)到村庄\(y\)的最短路径长度为多少.如果无法找到…
次元传送门:洛谷P1070 思路 一开始以为要用什么玄学优化 没想到O3就可以过了 我们只需要设f[i]为到时间i时的最多金币 需要倒着推回去 即当前值可以从某个点来 那么状态转移方程为: f[i]=max(f[i],f[i-k]+val-cost[now]); now表示从now这个工厂来 cost表示在now买下了机器人 val为从now走i个单位时间路上可收集的总金币 代码 #include<iostream> #include<cstring> using namespac…
重建道路 题目链接 一场可怕的地震后,人们用N个牲口棚(1≤N≤150,编号1..N)重建了农夫John的牧场.由于人们没有时间建设多余的道路,所以现在从一个牲口棚到另一个牲口棚的道路是惟一的.因此,牧场运输系统可以被构建成一棵树.John想要知道另一次地震会造成多严重的破坏.有些道路一旦被毁坏,就会使一棵含有P(1≤P≤N)个牲口棚的子树和剩余的牲口棚分离,John想知道这些道路的最小数目. 显然是一道树形DP 然后看题解 树上分组背包问题 dp[u][i][j]表示以u为根的子树中,前i个子…