首页 > 其他分享 >CF1430G 题解

CF1430G 题解

时间:2022-09-23 09:57:13浏览次数:88  
标签:每个 题解 点权 最小 权值 CF1430G

传送门

题意

给定一个有向无环图,每条边有权重 \(w_i\),给每个点分配权值 \(a_i\),使每个点的权值大于其所有出点。设每条边的权值为 \(a_{x_i}-a_{b_i}\)。输出一种分配方案,使得边的权重 \(×\) 权值的和最小。

题解

将边权拆成点权,则对于每条边 \((x,y,z)\),\(w_{x_i}+=z,w_{y_i}-=z\)。问题转化为分配点权使 \(a_i×w_i\) 最小。
有一个性质:\(a_i∈[0,n-1]\)。易证。
由于 \(n\) 很小,可以考虑将每个点拆为 \(n\) 个点,分别表示其 \(a_i\)。在此基础上跑网络流。
由题解得一种很好的建图方法,即将每个点的拆点首尾相连形成一条链,链的头尾分别与 \(S,T\) 相连。问题转化为最小割,割断一条边即为取对应的权值。另外还有 \(a_i\) 之间的限制条件,则对于 \((x,y)\),连 \((y_j,x_{j+1},INF),j∈[0,n-1]\)。则若取了 \(x_i\),就不能取 \(y_j,j≥i\)。
流量不能有负值,平移即可。

标签:每个,题解,点权,最小,权值,CF1430G
From: https://www.cnblogs.com/FishJokes/p/16721592.html

相关文章

  • 题解【P5588 hegm 爬树】
    题目传送门。来一个不一样的工程做法。我们直接对于每一个颜色\(i\)建虚树,显然可以通过树形DP来判断颜色\(i\)的节点是否在一条路径上。原题。然后存一下这条路径......
  • AtCoder Beginner Contest 043 题解
    欢迎来到我的算法小屋前言 TaskNameAChildrenandCandies(ABCEdit)BUnhappyHacking(ABCEdit)CBeTogetherDUnbalancedA1)题目描述2......
  • CF1540B Tree Array 题解
    CF1540BTreeArray给定一棵\(n\)个节点的树。对于这棵树,我们通过下列方法来生成一个序列:等概率选择这\(n\)个节点中的一个节点,并对这个节点打上标记(初始时没有节......
  • Dev C++中窗口输出中文问题解决
    1、window+R+regedit调出注册表  2、点击Dec_Dev-Cpp_ConsolePauser.exe 3、鼠标左键双击“CodePage”,弹出设置页面。选择“十进制”,输入65001  4、右键点......
  • 【题解】ARC139D Priority Queue 2
    ?思路来源题意假设初始时有一个长度为\(N\),值域为\(M\)的数组\(A\)。现在要进行\(K\)次操作,每次操作从\([1,M]\)中选取一个数,并将其加入\(A\)中。单次操作完......
  • 牛客题解 Channels
    链接:https://ac.nowcoder.com/acm/problem/201606来源:牛客网题解作者岛田小雅要求一段区间内的有效时间总和,第一反应用前缀和。要求\(l\)和\(r\)之间有效时间的和......
  • CF1446D1 题解
    传送门题意给定序列\(a_1,a_2,...,a_n\),求最长的满足区间众数有至少两种的区间长度。\(n≤2×10^5,1≤a_i≤min(100,n)\)题解首先,若整个序列有至少两种众数,则答案为......
  • 题解【CF1307F Cow and Vacation】
    感觉CF*3300的难度没有这么简单吧(题目传送门。考虑\(\texttt{Bessie}\)运动的过程:起点\(\to\)休息点$\to$\(\cdots\)\(\to\)休息点\(\to\)终点。考虑我们......
  • 2 つの山札题解
    题目链接题意简述:给定两个长度为\(n\)的排列\(A\)和\(B\),按照一下方式生成一个长度为\(2n-2\)的序列:你对每一个排列分别做\(n-1\)次操作,每一次选择一个序列进行......
  • 题解 P7839 「Wdoi-3」夜雀 singing (思路非常好的一道题)
    代码细节非常多的一道题。这里只说思想了先。首先,找到那些安全树。所有的乌鸦最后一定会到达某一棵安全树上。因此,对于每只乌鸦,分别向左和向右暴力寻找,看是否可到达安全......