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

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行,每行一个数,按编号给出每个点的值(若为负数…
http://www.spoj.com/problems/OPTM/ 题意: 给出一张图,点有点权,边有边权 定义一条边的权值为其连接两点的异或和 定义一张图的权值为所有边的权值之和 已知部分点的点权,自定义其余点的点权 使图的权值最小,并在此基础上使点权和最小 输出点的权值 异或——按位做 那么题目就变成了已知一些点的点权为0/1,自定义剩余点的点权0/1 使01相遇的边最少 (01相遇指的是一条边连接的两点的点权不同) 我们建立最小割模型: 先不考虑第二问 源点向已知点的点权为0的点连正无穷…
因为是异或运算,所以考虑对每一位操作.对于所有已知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) \)的值最小.也就是说,在这道题中的意义就是在当前位使最少…
Description 定义无向图中的一条边的值为:这条边连接的两个点的值的异或值. 定义一个无向图的值为:这个无向图所有边的值的和. 给你一个有n个结点m条边的无向图.其中的一些点的值是给定的,而其余的点的值由你决定(但要求均为非负数),使得这个无向图的值最小.在无向图的值最小的前提下,使得无向图中所有点的值的和最小.   Input 第一行,两个数n,m,表示图的点数和边数. 接下来n行,每行一个数,按编号给出每个点的值(若为负数则表示这个点的值由你决定,值的绝对值大小不超过10^9). 接…
[题目链接] http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=17875 [题意] 给定一个图,图的权定义为边的两端点相抑或值的和.问如何给没有权值的点分配权值使得图的权值最小. [思路] 考虑每一二进制位i,即我们要依次确定每一二进制位且构造该二进制位的最优方案,建图如下: (S,u,inf)            u的i位为0 (u,T,inf)            u的i位为1 (u,v,1)(v,u,1)    …
传送门 闵神讲网络流应用的例题,来水一水 要写出这道题,需要深入理解两个概念,异或和最小割. 异或具有相对独立性,所以我们把每一位拆开来看,即做大概$32$次最小割.然后累加即可. 然后是最小割把一张图分割成两个集合,简单看就是0集合和1集合. 简单的建图: 原图不变,改成双向边,所有的流量限制为1.然后所有S点向点权为1的连边,点权为0的向T连边,容量都是正无穷. 为什么这样建?首先看,最小割把一张图分成两个点集.而因为我们的流量限制可以让最小割只割真实存在的边,而割的也只有可能是跨越0集合和…
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,…
题面 一个无向图,一些点有固定权值,另外的点权值由你来定. 边的值为两点的异或值,一个无向图的值定义为所有边的值之和. 求无向图的最小值 分析 每一位都互不干扰,按位处理. 用最小割算最小值 保留原图的边,容量为1 如果当前点这一位是1,就从S连向当前点,容量为∞\infty∞ 如果当前点这一位是0,就从当前点连向T,容量为∞\infty∞ 那么这样一来,分在S一边就表示选,分在T一边就表示不选.如果相邻的两点在不同的集合,中间的边就必须断掉,造成1的代价,那么刚好相当于中间的边的值. 跑一遍最…
这道题和 BZOJ 2400 是一道题,不多讲了 CODE #include <cstdio> #include <cstring> #include <vector> #include <queue> #include <algorithm> using namespace std; typedef long long LL; template<typename T>inline void read(T &num) { ch…
SP839 Optimal marks(最小割) 给你一个无向图G(V,E). 每个顶点都有一个int范围内的整数的标记. 不同的顶点可能有相同的标记.对于边(u,v),我们定义Cost(u,v)= mark [u] \(\oplus\) mark [v].现在我们知道某些节点的标记了.你需要确定其他节点的标记,以使边的总成本尽可能小.(0 < N <= 500, 0 <= M <= 3000) 先来看一下异或的性质,由于每一位是独立的,我们可以把每一位拉出来分开考虑,变成32个子…
[SPOJ839]Optimal Marks 试题描述 You are given an undirected graph \(G(V, E)\). Each vertex has a mark which is an integer from the range \([0..2^{31} - 1]\). Different vertexes may have the same mark. For an edge \((u, v)\), we define \(Cost(u, v) = mark…
Optimal Marks(optimal) 题目描述 定义无向图边的值为这条边连接的两个点的点权异或值. 定义无向图的值为无向图中所有边的值的和. 给定nn个点mm条边构成的图.其中有些点的权值是给定的,另外一些由你来定.点权必须为非负数.现在你需要使无向图的值最小,且在保证图的权值最小的情况下点的权值的和最小. 输入 第一行两个数nn和mm,表示图的点数和边数. 接下来nn行,每行一个数,表示每个点的权值.如果是负数,表示该点点权由你定,点权绝对值不超过109109. 接下来mm行,每行两个…
题意:给一张无向图,每个点有其点权,边(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.和已知编号的点连…
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…
题目大概说给一张图,每个点都有权,边的权等于其两端点权的异或和,现已知几个点的权,为了使所有边的边权和最小,其他点的权值该是多少. 很有意思的一道题,完全看不出和网络流有什么关系. 考虑每个未知的点$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$! 这样问题就明了了: 相当于对于每…
[题意]给出一个无向图,每个点有一个标号mark[i],不同点可能有相同的标号.对于一条边(u, v),它的权值定义为mark[u] xor mark[v].现在一些点的标号已定,请决定剩下点的标号,使得总的边权和最小.(0 < N <= 500, 0 <= M <= 3000, 0 <= mark[i] <= 2^31-1) 胡伯涛神牛<最小割模型在信息学竞赛中的应用>中的例题.非常好的一道题!非常推荐! [思路] 我们把问题数学化就是:  Minimum…
luogu 题意 给你一个无向图\(G(V,E)\). 每个顶点都有一个int范围内的整数的标记. 不同的顶点可能有相同的标记. 对于边\((u,v)\),我们定义\(Cost(u,v)=\rm mark_u\ xor \ mark_v\). 现在我们知道某些节点的标记了.你需要确定其他节点的标记,以使边的总成本尽可能小. sol 既然是异或的话那就按位考虑吧. 每个已经确定的点和\(S\)或者是\(T\)连\(inf\)边.两个相邻的点之间连双向为\(1\)的边. 直接就是最小割了吧. 跑完最…
题意 定义无向图中的一条边的值为:这条边连接的两个点的值的异或值. 定义一个无向图的值为:这个无向图所有边的值的和. 给你一个有 \(n\) 个结点 \(m\) 条边的无向图.其中的一些点的值是给定的,而其余的点的值由你决定(但要求均为非负数),使得这个无向图的值最小.在无向图的值最小的前提下,使得无向图中所有点的值的和最小. 题解 对每一位单独考虑.对于已经确定的数,如果当前位是 \(0\) 则与起点连边,为 \(1\) 则与终点连边,然后原图上的边容量为 \(1\) 的边.这样对于未知的点我…
题目大意: 给你一个无向图\(G(V,E)\). 每个顶点都有一个int范围内的整数的标记. 不同的顶点可能有相同的标记. 对于边\((u,v)\),我们定义\(Cost(u,v)=mark [u]\ \ xor\ \ mark [v]\). 现在我们知道某些节点的标记了.你需要确定其他节点的标记,以使边的总成本尽可能小. 最后要求输出的每个点的标号 QwQ一看到这种跟位运算有关题目,就会想到按位来处理 仔细考虑,发现这个题满足最小割的模型,对于每一位,当时将所有点的对应位分成0,或者是1 那么…
首先肯定每一位单独考虑,对于每一位,源点连向该位点权为0的节点inf的边,点权为1的节点连向汇点inf的边,每一条无向边拆成两条流量为1的有向边,跑最小割. 考虑一组割,一定将原图划分成源点和汇点两部分,那么左半部分都选0,右半部分都选1,那么它的代价就是割的代价,即要求最小割. 为了让点的值最小,相当于要让汇点集合的点数尽量少,那么直接从汇点搜一遍,将所有能走到的节点记为1,其他记为0即可. 还有一种做法比较神奇,将两点之间的边权增加为10000(需要大于总点数即可),然后再让源点向每一个点再…
2400: Spoj 839 Optimal Marks Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 567  Solved: 202[Submit][Status][Discuss] Description 定义无向图中的一条边的值为:这条边连接的两个点的值的异或值. 定义一个无向图的值为:这个无向图所有边的值的和. 给你一个有n个结点m条边的无向图.其中的一些点的值是给定的,而其余的点的值由你决定(但要求均为非负数),使得这个无向图的值最小…
最短路问题此类问题类型不多,变形较少 POJ 2449 Remmarguts' Date(中等)http://acm.pku.edu.cn/JudgeOnline/problem?id=2449题意:经典问题:K短路解法:dijkstra+A*(rec),方法很多相关:http://acm.pku.edu.cn/JudgeOnline/showcontest?contest_id=1144该题亦放在搜索推荐题中 POJ 3013 - Big Christmas Tree(基础)http://ac…