[CSP-J2019 江西] 道路拆除 题解】的更多相关文章

发现大家都是将路径拆成三条链来做,这里提供一种暴力的乱搞方法. 思路 看到这一道题的第一想法就是跑最短路.可是仔细想想就发现,由于重合的路径只算一遍,所以导致两条最短路不一定是最优解. 接着,看到数据范围中的 \(m\leq 3000\) 告诉我们这个无向图是稀疏图.也就是说,从 \(1\) 到 \(s1,s2\) 的简单路径(重复走过点或边没有意义)总数不会很多.因此,我们就可以穷举 \((1,s1),(1,s2)\) 的所有简单路径,求最小经过的边即可. 只要加上以下的基础剪枝即可: 如果经…
P3905 道路重建 题目描述 从前,在一个王国中,在\(n\)个城市间有\(m\)条道路连接,而且任意两个城市之间至多有一条道路直接相连.在经过一次严重的战争之后,有\(d\)条道路被破坏了.国王想要修复国家的道路系统,现在有两个重要城市\(A\)和\(B\)之间的交通中断,国王希望尽快的恢复两个城市之间的连接.你的任务就是修复一些道路使\(A\)与\(B\)之间的连接恢复,并要求修复的道路长度最小. 输入格式 输入文件第一行为一个整数\(n(2<n≤100)\),表示城市的个数.这些城市编号…
题目链接:https://www.luogu.org/problemnew/show/P2296 题意:给定起点终点,找一条从起点到终点的最短路径使路上的每个点都能有路径到达终点. 我们先反着建一遍图,然后从终点开始bfs一遍图,标记所有终点可以到达的点.然后再枚举一遍点,如果这个点是终点没法到达的点,那么再枚举这个点所能连接的所有点,如果这些点是终点可以到达的,那么这些点就是不符合条件的.最后在符合条件的点上做一遍最短路. #include <queue> #include <cstd…
题目链接:https://www.luogu.org/problemnew/show/P3623 说是对克鲁斯卡尔的透彻性理解 正解: 先考虑加入水泥路,然后再考虑加入剩下必须要加入的最少鹅卵石路. 之后对原图再跑最小生成树 先跑鹅卵石路到k条. 再从所有水泥路中直到成为最小生成树. #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using name…
题目链接:https://www.luogu.org/problemnew/show/P1462 记住HP=0也叫死. #include <queue> #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; const int maxn = 5000001; const int inf = 0x7f; l…
日常吐槽 作为hin久hin久以前考试考到过的一道题窝一直咕咕咕到现在才想起来去做因为讲解都忘干净了然后自己重新考虑发现被卡了3天 题面 看到题目发现这题的dp状态似乎有点不是很明确? 我们来理一理题目的限制以及我们要干什么. 每条路上出现的金币数量受时间和地点的限制.所以我们至少要用到一个二维的东西. 题目中说当机器人消失的时候需要在任意一个工厂购买机器人,所以\(dp\)的状态表示貌似和地点没什么关系的亚子.但是地点又限制了金币的数量,这怎么搞? 我们可以把走一段路获得的金币数量预处理出来嘛…
先用做的暴力,因为n最多才3000嘛,但是后来发现时间复杂度不止\(O\)(\({n}^2\)),然后就放弃了. 讲讲我的暴力+错误思路吧: 把1到s1和s2的最短路算出来,用SPFA,然后用DFS求出所有的最短路的路径,然后两两枚举,看哪个重合的点数最多,然后输出其他点所连接的边的个数.如果你这样想,那就跟我一样错了.仔细读题,我们求的是删除的最大,也就是保留的最小,保留的是总和,而不是每一个都是最短路,所以思路错了(所以我好弱弱弱弱弱啊). 正解: 1到s1和1到s2当中,两条路径肯定是有公…
题目描述 曹是一只爱刷街的老曹,暑假期间,他每天都欢快地在阳光大学的校园里刷街.河蟹看到欢快的曹,感到不爽.河蟹决定封锁阳光大学,不让曹刷街. 阳光大学的校园是一张由N个点构成的无向图,N个点之间由M条道路连接.每只河蟹可以对一个点进行封锁,当某个点被封锁后,与这个点相连的道路就被封锁了,曹就无法在与这些道路上刷街了.非常悲剧的一点是,河蟹是一种不和谐的生物,当两只河蟹封锁了相邻的两个点时,他们会发生冲突. 询问:最少需要多少只河蟹,可以封锁所有道路并且不发生冲突. 输入格式 第一行:两个整数N…
开始更新咯 DP专题[题目来源BZOJ] 一.树形DP 1.bzoj2286消耗战 题解:因为是树形结构,一个点与根节点不联通,删一条边即可, 于是我们就可以简化这棵树,把有用的信息建立一颗虚树,然后开始DP即可 /* 思路: */ #include<algorithm> #include<cstdio> #include<cmath> #include<iostream> #include<cstring> #define ll long lo…
Problem DescriptionYou are the hero who saved your country. As promised, the king will give you some cities of the country, and you can choose which ones to own!But don't get too excited. The cities you take should NOT be reachable from the capital -…
Description 具体地说,杰森国有 N 个城市,由 M条单向道 路连接.神谕镇是城市 1而杰森国的首都是城市 N.你只需摧毁位于杰森国首都 的曾·布拉泽大神殿,杰森国的信仰,军队还有一切就都会土崩瓦解,灰飞烟灭. 为了尽量减小己方的消耗,你决定使用自爆机器人完成这一任务.唯一的困 难是,杰森国的一部分城市有结界保护,不破坏掉结界就无法进入城市.而每个 城市的结界都是由分布在其他城市中的一些结界发生器维持的,如果想进入某个 城市,你就必须破坏掉维持这个城市结界的所有结界发生器. 现在你有无…
题目 在一个遥远的世界里有两个国家:位于大陆西端的杰森国和位于大陆东端的 克里斯国.两个国家的人民分别信仰两个对立的神:杰森国信仰象征黑暗和毁灭 的神曾·布拉泽,而克里斯国信仰象征光明和永恒的神斯普林·布拉泽. 幻想历 8012年 1月,杰森国正式宣布曾·布拉泽是他们唯一信仰的神,同 时开始迫害在杰森国的信仰斯普林·布拉泽的克里斯国教徒. 幻想历 8012年 3月2日,位于杰森国东部小镇神谕镇的克里斯国教徒发动 起义. 幻想历 8012年 3月7日,神谕镇的起义被杰森国大军以残酷手段镇压. 幻想…
信仰斯普林·布拉泽的克里斯国教徒. 幻想历 8012年 3月2日,位于杰森国东部小镇神谕镇的克里斯国教徒发动 起义. 幻想历 8012年 3月7日,神谕镇的起义被杰森国大军以残酷手段镇压. 幻想历 8012年 3月8日,克里斯国对杰森国宣战.由数十万大军组成的克 里斯军团开至两国边境,与杰森军团对峙. 幻想历 8012年 4月,克里斯军团攻破杰森军团防线进入神谕镇,该镇幸存 的克里斯国教徒得到解放. 战争随后进入胶着状态,旷日持久.战况惨烈,一时间枪林弹雨,硝烟弥漫, 民不聊生. 幻想历 801…
道路修建这道题想来各位不陌生(传送门在此——Bzoj2435),看了此题,一开始以为是最初各个点处于分散状态,然后做了一下,直到发现标程都有点问题,才发现原题是说本来各点已经处于连接完毕的状态(phile:汗... HansBug:论HansBug同学的逗比本性^_^) 既然说道这里了,那么就提出一个新的问题——假如题目别的不变,然后输入的那些边的新的意义如下——首先,一开始各个点处于分散状态,然后按照输入的顺序,每输入一条边就按照当前两边的状态(即两点所在的块的大小之差的绝对值),进行和题目一…
题目描述 春春是一名道路工程师,负责铺设一条长度为 \(n\) 的道路. 铺设道路的主要工作是填平下陷的地表.整段道路可以看作是 \(n\) 块首尾相连的区域,一开始,第 \(i\) 块区域下陷的深度为 \(d_i\)​ . 春春每天可以选择一段连续区间\([L,R]\) ,填充这段区间中的每块区域,让其下陷深度减少 \(1\).在选择区间时,需要保证,区间内的每块区域在填充前下陷深度均不为 \(0\) . 春春希望你能帮他设计一种方案,可以在最短的时间内将整段道路的下陷深度都变为 \(0\)…
题目 Farmer John正在一个新的销售区域对他的牛奶销售方案进行调查.他想把牛奶送到T个城镇 \((1 <= T <= 25,000)\),编号为\(1T\).这些城镇之间通过\(R\)条道路 \((1 <= R <= 50,000\),编号为\(1\)到\(R\)) 和\(P\)条航线 \((1 <= P <= 50,000\),编号为\(1\)到\(P\)) 连接.每条道路i或者航线\(i\)连接城镇\(A_i (1 <= A_i <= T)\)到…
link Description 幸福国度可以用 N 个城镇(用 1 到 N 编号)构成的集合来描述,这些城镇 最开始由 M 条双向道路(用 1 到 M 编号)连接.城镇 1 是中央城镇.保证一个 人从城镇 1 出发,经过这些道路,可以到达其他的任何一个城市.这些道路都是 收费道路,道路 i 的使用者必须向道路的主人支付 ci分钱的费用.已知所有的这 些ci是互不相等的.最近有K条新道路建成,这些道路都属于亿万富豪Mr. Greedy. Mr. Greedy 可以决定每条新道路的费用(费用可以相…
第一题略 第二题 #include<stdio.h> int main() { int a1,a2,a3,b1,b3,b2,c1,c2,c3,n,sum,d1,d2,d3,i; scanf("%d\n",&n); ;i<n;i++) { scanf("%d%d%d%d%d%d",&a1,&a2,&a3,&b1,&b2,&b3); c1=(a1+b1)**; c2=(a2+b2)*; c3=(a…
[APIO2008]免费道路 题目描述 新亚(New Asia)王国有 N 个村庄,由 M 条道路连接.其中一些道路是鹅卵石路,而其它道路是水泥路.保持道路免费运行需要一大笔费用,并且看上去 王国不可能保持所有道路免费.为此亟待制定一个新的道路维护计划. 国王已决定保持尽可能少的道路免费,但是两个不同的村庄之间都应该一条且仅由一条 且仅由一条免费道路的路径连接.同时,虽然水泥路更适合现代交通的需 要,但国王也认为走在鹅卵石路上是一件有趣的事情.所以,国王决定保持刚好 K 条鹅卵石路免费. 举例来…
次元传送门:洛谷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…
http://www.lydsy.com/JudgeOnline/problem.php?id=3195 Description 小宇从历史书上了解到一个古老的文明.这个文明在各个方面高度发达,交通方面也不例外.考古学家已经知道,这个文明在全盛时期有n座城市,编号为1..n.m条道路连接在这些城市之间,每条道路将两个城市连接起来,使得两地的居民可以方便地来往.一对城市之间可能存在多条道路. 据史料记载,这个文明的交通网络满足两个奇怪的特征.首先,这个文明崇拜数字K,所以对于任何一条道路,设它连接…
1001 Beautiful Palindrome Number 枚举回文数字前半部分,然后判断该数字是否满足,复杂度为O(sqrt(n))! 1002 Recovery Sequence  本题的核心在于求出约瑟夫环出队序列,如果直接暴力的话复杂度约为O(N*N)将会超时.这里可以使用 树状数组或者线段树或者SBt等数据结构 来优化根据本次出队位置和剩余人数的数量,可以算出下次出队的位置,从而使用数据结构来查询其真实标号.对于每组样例的复杂度根据不同的数据结构为 O(nlgn)或O(nlgnl…
这道题真的是令人窒息,Kruskal调了贼久一直RE,最后发现数组大小稍微少了那么一点点.(也就10倍吧..) 言归正传,根据本人的分析(以及算法标签的提示),这是一道求最小生成树的题目,当然要注意已经有一些路被建成了,因此他们直接标0即可. 下面是这道题用到了的所有(全局)变量. maxn, n, m就不解释了. x[]和y[]是用来储存农场的坐标的,当然也可以用二维数组写,只是我懒得敲那么多字(说起来差别也不大). f是并查集中储存祖先的数组. 如果有不了解的并查集的可以参考这一片讲解,个人…
Problem P2296 [寻找道路] solution 首先声明,这题我用了spfa,而: 关于spfa:它死了. 杀手: NOI 2018−T1 出题人 感谢出题人,没有卡spfa 用时: 20ms 空间: 5082KB(4.74MB) 代码长度: 3.32KB 提交记录: R9776986 先说思路: 首先,要处理出哪些点不能直接或间接与终点连通 函数:void live(void) 这里的方法是建反图跑spfa 不能直接或间接与终点连通的点存在temp_alive数组里,1为活着,0为…
P1462 通往奥格瑞玛的道路 题目背景 在艾泽拉斯大陆上有一位名叫歪嘴哦的神奇术士,他是部落的中坚力量 有一天他醒来后发现自己居然到了联盟的主城暴风城 在被众多联盟的士兵攻击后,他决定逃回自己的家乡奥格瑞玛 题目描述 在艾泽拉斯,有n个城市.编号为1,2,3,...,n. 城市之间有m条双向的公路,连接着两个城市,从某个城市到另一个城市,会遭到联盟的攻击,进而损失一定的血量. 每次经过一个城市,都会被收取一定的过路费(包括起点和终点).路上并没有收费站. 假设1为暴风城,n为奥格瑞玛,而他的血…
P2872 [USACO07DEC]道路建设Building Roads 题目描述 Farmer John had just acquired several new farms! He wants to connect the farms with roads so that he can travel from any farm to any other farm via a sequence of roads; roads already connect some of the farms…
前 言: 一直很想写这道括号树..毕竟是在去年折磨了我4个小时的题.... 上午小测3 T1 括号序列 前言: 原来这题是个dp啊...这几天出了好几道dp,我都没看出来,我竟然折磨菜. 考试的时候先打了个暴力,然后就开始往容斥上想.... 解析: 考虑dp. 令dp[i] 表示以i为结尾的,合法的子串数量. 令match[i] 表示进行括号匹配时,与i匹配的括号的编号. (以上i都是右括号,如果是左括号置为0即可) 然后,就有: if(match[i]) dp[i]=dp[match[i]-1…
题目大意: 在有向图G 中,每条边的长度均为1 ,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件: 1 .路径上的所有点的出边所指向的点都直接或间接与终点连通. 2 .在满足条件1 的情况下使路径最短. 思路: 先将与终点相通的点求出来(从终点倒着bfs,再将进入未访问到的点的点踢去),再在部分图跑最短路. 代码: #include<cstdio> ,INF=; int cnt,n,m,s,t,i,j,o[M],q[M],v[M],w[M],dist[M],last[…
原题传送门 实际就是一道简单的树形dp 设f[u][i][j]表示从根结点到结点u经过i条未翻修公路,j条未翻修铁路的贡献最小值 边界条件:f[leaf][i][j]=(A+i)(B+j)C (题目上公式给的是c(a+i)(b+j),而不是a(b+i)(c+j)) 转移方程:f[x][i][j]=min(f[ls][i+1][j]+f[rs][i][j],f[ls][i][j]+f[rs][i][j+1]) (ls,rs表示公路/铁路的起点) 这题有点卡空间qwqwq #include <bit…
[题目]: https://www.luogu.org/problemnew/show/P1462 题意 题目是给定了一张双向边,有边权的图,然后让我们求出一个最小值,满足一条路径上的最大的费用小于这个最小值且这条路径的所损失的血量不超过总血量. 思路 往往这种求最大值的最小值一般就是二分,然后写个check函数来判断这个最小值是否满足条件,如果不满足条件,就扩大范围,而如果满足条件的话就缩小范围,直到满足条件. 所以我们就可以二分一个值\(h\)(二分边界是起点的费用到所有点的费用最大值),跑…