洛谷P2052 道路修建】的更多相关文章

P2052 道路修建 题目描述 在 W 星球上有 n 个国家.为了各自国家的经济发展,他们决定在各个国家 之间建设双向道路使得国家之间连通.但是每个国家的国王都很吝啬,他们只愿 意修建恰好 n – 1 条双向道路. 每条道路的修建都要付出一定的费用,这个费用等于道路长度乘以道路两端 的国家个数之差的绝对值.例如,在下图中,虚线所示道路两端分别有 2 个.4 个国家,如果该道路长度为 1,则费用为 1×|2 – 4|=2.图中圆圈里的数字表示国 家的编号.  由于国家的数量十分庞大,道路的建造方案…
To 洛谷.1265 公路修建 题目描述 某国有n个城市,它们互相之间没有公路相通,因此交通十分不便.为解决这一“行路难”的问题,政府决定修建公路.修建公路的任务由各城市共同完成. 修建工程分若干轮完成.在每一轮中,每个城市选择一个与它最近的城市,申请修建通往该城市的公路.政府负责审批这些申请以决定是否同意修建. 政府审批的规则如下: (1)如果两个或以上城市申请修建同一条公路,则让它们共同修建: (2)如果三个或以上的城市申请修建的公路成环.如下图,A申请修建公路AB,B申请修建公路BC,C申…
题目描述 在 W 星球上有 n 个国家.为了各自国家的经济发展,他们决定在各个国家 之间建设双向道路使得国家之间连通.但是每个国家的国王都很吝啬,他们只愿 意修建恰好 n – 1 条双向道路. 每条道路的修建都要付出一定的费用,这个费用等于道路长度乘以道路两端 的国家个数之差的绝对值.例如,在下图中,虚线所示道路两端分别有 2 个.4 个国家,如果该道路长度为 1,则费用为 1×|2 – 4|=2.图中圆圈里的数字表示国 家的编号.  由于国家的数量十分庞大,道路的建造方案有很多种,同时每种方案…
次元传送门:洛谷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个城市间有m条道路连接,而且任意两个城市之间至多有一条道路直接相连.在经过一次严重的战争之后,有d条道路被破坏了.国王想要修复国家的道路系统,现在有两个重要城市A和B之间的交通中断,国王希望尽快的恢复两个城市之间的连接.你的任务就是修复一些道路使A与B之间的连接恢复,并要求修复的道路长度最小. 输入输出格式 输入格式: 输入文件road.in,第一行为一个整数n(2<n≤100),表示城市的个数.这些城市编号从1到n.第二行为一个整数m(n-1≤m≤n(n-1)…
[HNOI2014]道路堵塞 题意 给一个有向图并给出一个这个图的一个\(1\sim n\)最短路,求删去这条最短路上任何一条边后的最短路. 又事SPFA玄学... 有个结论,新的最短路一定是\(1\sim l,l\sim r,r\sim n\)组成的,中间一段是非最短路,两边是原最短路 先删去最短路 然后从1开始枚举短边,按顺序维护\(1\sim i\)前\(i\)个点连到\(r\sim n\)的最小值,发现我们要根据\(r\)的变换进行删除,可以拿一个堆维护. 剩下的对每个点跑跑\(SPFA…
题目链接:传送门 题目大意: 有N条相连的环形道路.在1-M的时间内每条路上都会出现不同数量的金币(j时刻i工厂出现的金币数量为val[i][j]).每条路的起点处都有一个工厂,总共N个. 可以从任意工厂i购买机器人,价格为cost[i].机器人可以设定为从购买的工厂开始顺时针行走长度为1-P的任意时间,并在这段时间内在路上收集金币. 小新能且只能同时拥有一个机器人,当一个机器人行走结束后小新会立即从任意一个工厂内买一个新的机器人,设定时间,并继续顺时针收集. 问M时间内最多能收集多少金币. 2…
题目描述 在 H 国的小 w 决定到从城市 \(u\) 到城市 \(v\) 旅行,但是此时小 c 由于各种原因不在城市 \(u\),但是小 c 决定到在中途与小 w 相遇 由于 H 国道路的原因,小 w 从城市 \(u\) 到城市 \(v\) 的路线不是固定的,为了合理分配时间,小 c 想知道从城市 \(u\) 到城市 \(v\) 有多少个城市小 w 一定会经过,特别地,\(u,v\) 也必须被算进去,也就是说无论如何答案不会小于 2 由于各种特殊的原因,小 c 并不知道小 w 的起点和终点,但…
P1070 道路游戏 题目描述 小新正在玩一个简单的电脑游戏. 游戏中有一条环形马路,马路上有\(n\)个机器人工厂,两个相邻机器人工厂之间由一小段马路连接.小新以某个机器人工厂为起点,按顺时针顺序依次将这\(n\)个机器人工厂编号为\(1-n\),因为马路是环形的,所以第\(n\)个机器人工厂和第\(1\)个机器人工厂是由一段马路连接在一起的.小新将连接机器人工厂的这\(n\)段马路也编号为\(1-n\),并规定第\(i\)段马路连接第\(i\)个机器人工厂和第\(i+1\)个机器人工厂(\(…
P3905 道路重建 题目描述 从前,在一个王国中,在n个城市间有m条道路连接,而且任意两个城市之间至多有一条道路直接相连.在经过一次严重的战争之后,有d条道路被破坏了.国王想要修复国家的道路系统,现在有两个重要城市A和B之间的交通中断,国王希望尽快的恢复两个城市之间的连接.你的任务就是修复一些道路使A与B之间的连接恢复,并要求修复的道路长度最小. 输入输出格式 输入格式: 输入文件road.in,第一行为一个整数n(2<n≤100),表示城市的个数.这些城市编号从1到n.第二行为一个整数m(n…
P1265 公路修建 177通过 600提交 题目提供者该用户不存在 标签图论 难度普及+/提高 提交该题 讨论 题解 记录 最新讨论 long long类型赋值-1为什么… p党80的进 为什么不过啊... 题目描述 某国有n个城市,它们互相之间没有公路相通,因此交通十分不便.为解决这一“行路难”的问题,政府决定修建公路.修建公路的任务由各城市共同完成. 修建工程分若干轮完成.在每一轮中,每个城市选择一个与它最近的城市,申请修建通往该城市的公路.政府负责审批这些申请以决定是否同意修建. 政府审…
P1070 道路游戏 题目描述 小新正在玩一个简单的电脑游戏. 游戏中有一条环形马路,马路上有 n 个机器人工厂,两个相邻机器人工厂之间由一小段马路连接.小新以某个机器人工厂为起点,按顺时针顺序依次将这 n 个机器人工厂编号为1~n,因为马路是环形的,所以第 n 个机器人工厂和第 1 个机器人工厂是由一段马路连接在一起的.小新将连接机器人工厂的这 n 段马路也编号为 1~n,并规定第 i 段马路连接第 i 个机器人工厂和第 i+1 个机器人工厂(1≤i≤n-1),第 n 段马路连接第 n 个机器…
P1265 公路修建 题目描述 某国有n个城市,它们互相之间没有公路相通,因此交通十分不便.为解决这一“行路难”的问题,政府决定修建公路.修建公路的任务由各城市共同完成. 修建工程分若干轮完成.在每一轮中,每个城市选择一个与它最近的城市,申请修建通往该城市的公路.政府负责审批这些申请以决定是否同意修建. 政府审批的规则如下: (1)如果两个或以上城市申请修建同一条公路,则让它们共同修建: (2)如果三个或以上的城市申请修建的公路成环.如下图,A申请修建公路AB,B申请修建公路BC,C申请修建公路…
P1070 道路游戏 题意: 有一个环,环上有n个工厂,每个工厂可以生产价格为x的零钱收割机器人,每个机器人在购买后可以沿着环最多走p条边,一秒走一条,每条边不同时间上出现的金币是不同的,问如何安排购买机器人,可以在m的时间内,得到最多的金币. 思路: O(n^3)的算法,设DP[i] 为第 i 秒得到的最多金币,sum[ i ][ j ] 表示第 i 秒到 j工厂得到的金币值, cost[ i ]表示从第 i 个工厂买机器人的价格. ; i<=m; i++){ //秒 ; k<=min(i,…
题目描述 某国有n个城市,它们互相之间没有公路相通,因此交通十分不便.为解决这一“行路难”的问题,政府决定修建公路.修建公路的任务由各城市共同完成. 修建工程分若干轮完成.在每一轮中,每个城市选择一个与它最近的城市,申请修建通往该城市的公路.政府负责审批这些申请以决定是否同意修建. 政府审批的规则如下: (1)如果两个或以上城市申请修建同一条公路,则让它们共同修建: (2)如果三个或以上的城市申请修建的公路成环.如下图,A申请修建公路AB,B申请修建公路BC,C申请修建公路CA.则政府将否决其中…
P3905 道路重建 题目描述 从前,在一个王国中,在\(n\)个城市间有\(m\)条道路连接,而且任意两个城市之间至多有一条道路直接相连.在经过一次严重的战争之后,有\(d\)条道路被破坏了.国王想要修复国家的道路系统,现在有两个重要城市\(A\)和\(B\)之间的交通中断,国王希望尽快的恢复两个城市之间的连接.你的任务就是修复一些道路使\(A\)与\(B\)之间的连接恢复,并要求修复的道路长度最小. 输入格式 输入文件第一行为一个整数\(n(2<n≤100)\),表示城市的个数.这些城市编号…
本题的描述:城市联盟,最短距离.. 使人想到了prim求MST,再一看数据范围:完全图!,那么一定得用prim,因为只有5000个点,所以不加优化的prim就能过. #include <iostream> #include <cstdio> #include <cstring> #include <cstdlib> #include <algorithm> #include <cmath> using namespace std; c…
正解:树形dp 解题报告: 传送门! 昂首先看懂题目趴QwQ大概就是说有棵满二叉树,有n个叶子节点(乡村)和n-1个非叶子节点,然后这棵树的每个节点有三个属性abc,对每个非叶子节点可以从与子节点的两条连边中选一条标记 然后对每个叶子节点i,设它到根节点经过了x条麻油被标记的左连边,y条麻油被标记的右连边,那它的贡献就会是ci*(ai-x)*(bi-y) 然后就考虑dp鸭 设f[x][i][j]:对于节点x,到达根的路径上有i条麻油标记的左连边,j条麻油标记的右连边 然后初始化是对叶子节点,直接…
正解:贪心+LCA+二分答案 解题报告: 想先港下部分分qwq因为我部分分只拿到了10ptsQAQ(时间不够不是理由,其实还是太弱,所以要想很久,所以才时间不够QAQ m=1 找直径长度,完 一条链 二分答案 check是一直加直到>mid为止 菊花图 二分答案 check是大于mid的直接加入否则尝试两两配对 然后港正解qwq 首先很明显的是个二分答案?这个大概是个比较简单看出的呢qwq 然后思考check怎么写 其实菊花图提示了一些 很容易想到的是对一个点,它的每个崽都最多给它贡献一条链,那…
题目大意:基本同上一题[bzoj5329][Sdoi2018]战略游戏,只是每个点集内只有两个点,且只有一组询问而已.(双倍经验?我反正就直接改了一下代码就交了) 题解:同上一题(链接见“题目大意”) 卡点:无 C++ Code: #include <cstdio> #include <cstring> #define maxn 1000010 #define maxm 1000010 int Tim, n, m, LCA; inline int min(int a, int b)…
题目描述 小新正在玩一个简单的电脑游戏. 游戏中有一条环形马路,马路上有 nn个机器人工厂,两个相邻机器人工厂之间由一小段马路连接.小新以某个机器人工厂为起点,按顺时针顺序依次将这 nn个机器人工厂编号为1-n1−n,因为马路是环形的,所以第nn 个机器人工厂和第11个机器人工厂是由一段马路连接在一起的.小新将连接机器人工厂的这 n 段马路也编号为 1-n1−n,并规定第ii段马路连接第 i 个机器人工厂和第 i+1i+1 个机器人工厂(1≤i≤n-11≤i≤n−1),第 nn 段马路连接第 n…
最短路 因为有负权边,所以不能 dijkstra ,本题数据还卡 SPFA 但是我们发现,有负权的都是有向边,而且如果把无向边连成的联通块看成一个点的话,有向边就连成了一个 DAG,所以我们可以对所有的联通块用dij求最短路 在 DAG上用拓扑序求最短路 注意: 堆优化的 Dijkstra 在定义的结构体重载运算符的时候注意相反 因为存在负权边,所以两点不可达,不等价于两点间的距离 == inf ,应为 两点间的距离大于一个很大的数 #include <iostream> #include &…
https://www.luogu.org/problemnew/show/P2872 算是比较裸的并查集了,已经有路的两个点之间建一条代价为0的边,路径长度计算两点之间的距离,做并查集就好咯. #include <algorithm> #include <iostream> #include <cstring> #include <cstdio> #include <cmath> using namespace std; #define Ldo…
设为第i秒获得的最大值 表示从当前世界是j,从pos走k步到当前点i的最大价值 注意这里的sum可以利用前面的值逐步累加. 我开始做的时候没有想到这一点单独求,然后就超时了. 同时要注意循环的循序问题. #include<cstdio> #include<cctype> #include<algorithm> #include<cstring> #define REP(i, a, b) for(int i = (a); i < (b); i++) #d…
题目:https://www.luogu.org/problemnew/show/P3905 分析: 此题是显然的最短路算法,只是看到一起删掉的一堆边感到十分棘手,而且还要求出的是最短添加边的总长度 但如果仔细观察就可以发现,我们其实并不用一个一个的全部枚举,只需要把添加的边做最短路就行了. 我们可以首先把数组初始化为一个较大的数,然后每读入一条边,就把此边的权值记录,但还要把它清零. 为什么呢? 因为我们清零相当于不考虑此边的权值,但又可以经过这条边,有效的能保留下删去的边,来仅仅考虑被删边的…
题目 首先考虑二分,然后发现最小长度越大的话,赛道就越少.所以可以用最终的赛道个数来判断长度是否合理.问题转化为给定一个长度,问最多有多少条互不重叠路径比这个给定长度大. 考虑贪心,毕竟贪心也是二分check函数的常用做法.原图毕竟为一棵树,每条路径都由一个端点一个终点和他们的\(LCA\)之间的连边组成.我们直接枚举lca,然后枚举lca的子链且该链上无被找到的链,对于没有找到的链,都匹配上子链上最小的.浪费最少的,考虑这样做为什么是对的,因为如果不练子链上,而去连父亲的话,最底下的链肯定就浪…
给一手链接 https://www.luogu.com.cn/problem/P1265 这道题本质上就是最小生成树,题目描述就是prim的思想 TIP:注意稠密图和稀疏图的区别 #include<cstdio> #include<cstring> #include<algorithm> #include<queue> #include<cmath> using namespace std; ; ; int read(){ ,f=,c=getch…
题目描述 春春是一名道路工程师,负责铺设一条长度为 \(n\) 的道路. 铺设道路的主要工作是填平下陷的地表.整段道路可以看作是 \(n\) 块首尾相连的区域,一开始,第 \(i\) 块区域下陷的深度为 \(d_i\). 春春每天可以选择一段连续区间 \([L,R]\) ,填充这段区间中的每块区域,让其下陷深度减少 \(1\).在选择区间时,需要保证,区间内的每块区域在填充前下陷深度均不为 \(0\) . 春春希望你能帮他设计一种方案,可以在最短的时间内将整段道路的下陷深度都变为 \(0\) .…
P2323 [HNOI2006]公路修建问题 题目描述 输入输出格式 输入格式: 在实际评测时,将只会有m-1行公路 输出格式: 思路: 二分答案 然后把每条能加的大边都加上,然后加小边 但在洛谷的题解中,没有采用二分答案而直接先处理k条大边,再处理小边的做法我认为是有问题的,欢迎证明或证伪. Code: #include <cstdio> #include <algorithm> const int N=10010; const int M=20010; struct node…
P2052 [NOI2011]道路修建 这个题其实在dfs里面就可以把事干完的,(我一开始还拿出来求了一把)…… 一条边的贡献就是儿子的大小和n-siz[v]乘上边权: #include<cmath> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; ; typedef long long ll; ],last[maxn],other[maxn*],len[…