【CF617D】Roads in Yusland】的更多相关文章

[CF617D]Roads in Yusland 题面 蒯的洛谷的 题解 我们现在已经转化好了题目了,戳这里 那么我们考虑怎么求这个东西,我们先判断一下是否所有的边都能被覆盖,不行的话输出\(-1\). 再将路径\(u\rightarrow v(dep_u>dep_v)\)以其权值为关键字丢到以\(u\)为根的左偏树(小根)上, 再进行\(dfs\),合并\(x\)的所有儿子的左偏树,对于点\(x\),我们能选则选, 还有打标记等细节,详见代码. 代码 #include <iostream&g…
[CF671D]Roads in Yusland(贪心,左偏树) 题面 洛谷 CF 题解 无解的情况随便怎么搞搞提前处理掉. 通过严密(大雾)地推导后,发现问题可以转化成这个问题: 给定一棵树,每条边可以被标记若干次,有若干个限制,每次限制一条链上所有边被覆盖的总次数不能超过一个给定值,现在要最大化边被覆盖的总次数. 不难发现转化出来的问题可以贪心来做,即一条边在满足所有限制的情况下,选择其能够被覆盖的最多次数一定不会更差,所以只要能覆盖就覆盖. 那么拿左偏树进行堆的合并就可以很容易的从下往上维…
传送门 洛谷翻译 CodeForces Solution emmm,先引入一个对偶问题的概念 \(max(c^Tx|Ax \leq b)=min(b^Ty|A^Ty \ge c)\) 考虑这个式子的现实意义: \(c\):每种成品的收益 \(x\):每种成品生产多少个 \(A\):生产每种成品所需要的原料数 \(b\):每种原料的总个数 \(y\):直接卖原料.每种原料的价格 然后考虑第一个式子就是成品的最大收益对吧. 现在我们不做成品了,搞原料去,显然不能够亏,不然不如搞成品. 所以我的最小收…
题目大意:给定一棵 N 个节点的边权无根树,求树的直径. 代码如下 #include <cstdio> #include <algorithm> using namespace std; const int maxn=1e4+10; struct node{ int nxt,to,w; }e[maxn<<1]; int tot=1,head[maxn]; inline void add_edge(int from,int to,int w){ e[++tot].nxt=…
[题目]D. Roads in Yusland [题意]给定n个点的树,m条从下往上的链,每条链代价ci,求最少代价使得链覆盖所有边.n,m<=3*10^5,ci<=10^9,time=4s. [算法]树形DP+线段树||可并堆 [题解]从每条边都需要一条链来覆盖的角度出发,令f[i]表示覆盖子树 i 以及 i到fa[i]的边(i->fa[i])的最小代价,整个过程通过dfs从下往上做. 由于f[son[i]]已知,所以f[i]的转移实际上是考虑覆盖i->fa[i]的链,定义这条链…
[题解]Paid Roads [SP3953] [Poj3411] 传送门:\(\text{Paid}\) \(\text{Roads}\) \(\text{[SP3953]}\) \(\text{[Poj3411]}\) [题目描述] 给出一张 \(n\) 个点 \(m\) 条边的有向图.对于每条边 \((x,y)\),如果之前经过 \(z\) 点,那么费用为 \(p\),否则为 \(r\).求 \(1\) 到 \(n\) 的最小费用.如果无法到达则输出 " \(\text{impossibl…
[网络流]One-Way Roads 题目描述 In the country of Via, the cities are connected by roads that can be used in both directions. However, this has been the cause of many accidents since the lanes are not separated: The drivers frequently look at their smartphon…
题目链接: http://codeforces.com/problemset/problem/711/D 题目大意: 给一张N个点N条有向边的图,边可以逆向.问任意逆向若干条边使得这张图无环的方案数(mod 1e9+7). 题目思路: [图论] 因为是N条边所以不会有复杂的环,最多只会有若干组一个环加一条链. 推算得到,一个大小为k的环对答案的贡献是*(2k-2),而长度为k的链对答案的贡献是2k(链不包括环上的) 用dfs找出每一组环的大小和链的长度,计算答案即可. // //by coolx…
题目背景 SOURCE:NOIP2016-RZZ-1 题目描述 有 N 个城市,这些城市通过 M 条无向边互相连通,每条边有一个权值 Ci ,表示这条边的长度为 2^(Ci) ,没有两条边的长度是相同的. 设 d(i,j)为城市 i 到城市 j 的最短路长度,求:…
[链接] 我是链接,点我呀:) [题意] 题意 [题解] 用floyd思想. 求出来这条新加的边影响到的点对即可. 然后尝试更新点对之间的最短路就好. 更新之后把差值从答案里面减掉. [代码] #include <bits/stdc++.h> #define ll long long using namespace std; const int N = 300; int n; ll dis[N+10][N+10]; int k; ll ans = 0; void updata(ll &…