Optimal Marks SPOJ - OPTM】的更多相关文章

题意:给一张无向图,每个点有其点权,边(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建容量为正无穷的边,对…
传送门 论文<最小割模型在信息学竞赛中的应用>原题 二进制不同位上互不影响,那么就按位跑网络流 每一位上,确定的点值为1的与S连一条容量为INF的有向边.为0的与T连一条容量为INF的有向边. 其他的按给定的无向图建边,容量为1. 统计答案是从源点能到达的点(流量未达到容量)即为该位上为1的点. 需要跑多少遍根据所有权值的最高位来确定.直接跑30次TLE了. #include <bits/stdc++.h> using namespace std; inline int read(…
传送门 一个无向图,每个点有点权,某些点点权确定了,某些点由你来确定,边权为两个点的异或和,要使边权和最小. 这不是一道按位做最小割的大水题么 非常开心地打了,还非常开心地以为有spj,然后非常开心地Wa了 才发现在边权和最小的条件下还要让点权和最小. 这可咋整啊,难不成要费用流. 然后悄悄搜了下题解发现了巧妙的解决方法,把原来建的图中的边权都扩大10000倍,然后在选1的地方边权再悄悄加上1 把它看成10000和1两条边的话,相当于优先考虑大边最小,大边最小的前提下小边最小,即答案. //Ac…
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 know the marks of som…
这题远超其他题非常靠近最小割的实际意义: 割边<=>付出代价<=>决定让两个点的值不相同,边权增加 最小割<=>点的值与s一个阵营的与s相同,与t一个阵营的与t相同 //    s1[i]:点i取值为0所带来的边权贡献+点权贡献 //        点权和=已知点权和(直接加)+最大流算出来的点权和(边权和同理) //            和直觉联系起来了! //            编号未定的点的连边情况只有两种: //            1.和已知编号的点连…
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]…
Spoj 839 Optimal Marks Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 908  Solved: 347[Submit][Status][Discuss] Description 定义无向图中的一条边的值为:这条边连接的两个点的值的异或值. 定义一个无向图的值为:这个无向图所有边的值的和. 给你一个有n个结点m条边的无向图.其中的一些点的值是给定的,而其余的点的值由你决定(但要求均为非负数),使得这个无向图的值最小.在无向图的…
[BZOJ2400]Spoj 839 Optimal Marks Description 定义无向图中的一条边的值为:这条边连接的两个点的值的异或值. 定义一个无向图的值为:这个无向图所有边的值的和. 给你一个有n个结点m条边的无向图.其中的一些点的值是给定的,而其余的点的值由你决定(但要求均为非负数),使得这个无向图的值最小.在无向图的值最小的前提下,使得无向图中所有点的值的和最小. Input 第一行,两个数n,m,表示图的点数和边数. 接下来n行,每行一个数,按编号给出每个点的值(若为负数…
SP839 Optimal marks(最小割) 给你一个无向图G(V,E). 每个顶点都有一个int范围内的整数的标记. 不同的顶点可能有相同的标记.对于边(u,v),我们定义Cost(u,v)= mark [u] \(\oplus\) mark [v].现在我们知道某些节点的标记了.你需要确定其他节点的标记,以使边的总成本尽可能小.(0 < N <= 500, 0 <= M <= 3000) 先来看一下异或的性质,由于每一位是独立的,我们可以把每一位拉出来分开考虑,变成32个子…