OPTM-Optimal Marks-SPOJ839最小割】的更多相关文章

http://www.spoj.com/problems/OPTM/ 题意: 给出一张图,点有点权,边有边权 定义一条边的权值为其连接两点的异或和 定义一张图的权值为所有边的权值之和 已知部分点的点权,自定义其余点的点权 使图的权值最小,并在此基础上使点权和最小 输出点的权值 异或——按位做 那么题目就变成了已知一些点的点权为0/1,自定义剩余点的点权0/1 使01相遇的边最少 (01相遇指的是一条边连接的两点的点权不同) 我们建立最小割模型: 先不考虑第二问 源点向已知点的点权为0的点连正无穷…
SP839 Optimal marks(最小割) 给你一个无向图G(V,E). 每个顶点都有一个int范围内的整数的标记. 不同的顶点可能有相同的标记.对于边(u,v),我们定义Cost(u,v)= mark [u] \(\oplus\) mark [v].现在我们知道某些节点的标记了.你需要确定其他节点的标记,以使边的总成本尽可能小.(0 < N <= 500, 0 <= M <= 3000) 先来看一下异或的性质,由于每一位是独立的,我们可以把每一位拉出来分开考虑,变成32个子…
题目大概说给一张图,每个点都有权,边的权等于其两端点权的异或和,现已知几个点的权,为了使所有边的边权和最小,其他点的权值该是多少. 很有意思的一道题,完全看不出和网络流有什么关系. 考虑每个未知的点$x$的权的二进制的第$i$位$x_i$,其对边权和的贡献为$\sum_{(x,y)\in E}(2^i\cdot(x_i\ \hat{}\ y_i))=2^i\sum_{(x,y)\in E}(x_i\ \hat{}\ y_i)$,而$x_i$取值是$0$或$1$! 这样问题就明了了: 相当于对于每…
题目大意: 给你一个无向图\(G(V,E)\). 每个顶点都有一个int范围内的整数的标记. 不同的顶点可能有相同的标记. 对于边\((u,v)\),我们定义\(Cost(u,v)=mark [u]\ \ xor\ \ mark [v]\). 现在我们知道某些节点的标记了.你需要确定其他节点的标记,以使边的总成本尽可能小. 最后要求输出的每个点的标号 QwQ一看到这种跟位运算有关题目,就会想到按位来处理 仔细考虑,发现这个题满足最小割的模型,对于每一位,当时将所有点的对应位分成0,或者是1 那么…
https://vjudge.net/problem/SPOJ-OPTM 题意: 给出一个无向图G,每个点 v 以一个有界非负整数 lv 作为标号,每条边e=(u,v)的权w定义为该边的两个端点的标号的异或值,即W=lu XOR lv.现已知其中部分点的标号,求使得该图的总边权和最小的标号赋值.即最小化: 思路: 这道题目在刘伯涛的论文里讲得十分的详细,看看论文就可以啦. XOR运算是根据二进制的每一位来计算的,,并且因为每一位都是相互独立的,互不影响,所以可以转化为下式: 接下来对于每一位都新…
题目描述 定义无向图中的一条边的值为:这条边连接的两个点的值的异或值. 定义一个无向图的值为:这个无向图所有边的值的和. 给你一个有n个结点m条边的无向图.其中的一些点的值是给定的,而其余的点的值由你决定(但要求均为非负数),使得这个无向图的值最小.在无向图的值最小的前提下,使得无向图中所有点的值的和最小. 输入 第一行,两个数n,m,表示图的点数和边数. 接下来n行,每行一个数,按编号给出每个点的值(若为负数则表示这个点的值由你决定,值的绝对值大小不超过10^9). 接下来m行,每行二个数a,…
OPTM - Optimal Marks You are given an undirected graph G(V, E). Each vertex has a mark which is an integer from the range [0..231 – 1]. Different vertexes may have the same mark. For an edge (u, v), we define Cost(u, v) = mark[u] xor mark[v]. Now we…
OPTM - Optimal Marks no tags  You are given an undirected graph G(V, E). Each vertex has a mark which is an integer from the range [0..231 – 1]. Different vertexes may have the same mark. For an edge (u, v), we define Cost(u, v) = mark[u] xor mark[v]…
题意:给一张无向图,每个点有其点权,边(i,j)的cost是\(val_i\ XOR \ val_j\).现在只给出K个点的权值,求如何安排其余的点,使总花费最小. 分析:题目保证权值不超过32位整型,按每一位k上的值(0 or 1),将点分为两个集合X和Y,X中为1的点,Y为0的点.如果X中的点到Y中的边有边,表示这一点对对结果将产生贡献.用最小的费用将对象划分成两个集合,问题转化为求最小割的问题. 建图:建源点s和汇点t.从s向X中的点建容量为正无穷的边;从Y中的点向t建容量为正无穷的边,对…
因为是异或运算,所以考虑对每一位操作.对于所有已知mark的点,mark的当前位为1则连接(s,i,inf),否则连(i,t,inf),然后其他的边按照原图连(u,v,1),(v,u,1),跑最大流求最小割.然后从s沿着有剩余流量的边dfs,把dfs到的点都与(|)上1,因为是与,所以即使操作到了已知mark的点也没关系. 考虑这样做的意义.最小割就是把总点集分割为两个点集S,T,使得所有\(u\in S,v\in T,val(u,v) \)的值最小.也就是说,在这道题中的意义就是在当前位使最少…