spoj 839 最小割+二进制】的更多相关文章

#include<stdio.h> #include<string.h> #include<queue> using namespace std; #define inf 0x3fffffff #define N 550 struct node { int u,v,w,next; }bian[N*20],ff[N*20],fk[N]; int vis[N]; int head[N],yong,dis[N],work[N]; int ans[N]; void init()…
传送门 论文<最小割模型在信息学竞赛中的应用>原题 二进制不同位上互不影响,那么就按位跑网络流 每一位上,确定的点值为1的与S连一条容量为INF的有向边.为0的与T连一条容量为INF的有向边. 其他的按给定的无向图建边,容量为1. 统计答案是从源点能到达的点(流量未达到容量)即为该位上为1的点. 需要跑多少遍根据所有权值的最高位来确定.直接跑30次TLE了. #include <bits/stdc++.h> using namespace std; inline int read(…
[BZOJ2400]Spoj 839 Optimal Marks Description 定义无向图中的一条边的值为:这条边连接的两个点的值的异或值. 定义一个无向图的值为:这个无向图所有边的值的和. 给你一个有n个结点m条边的无向图.其中的一些点的值是给定的,而其余的点的值由你决定(但要求均为非负数),使得这个无向图的值最小.在无向图的值最小的前提下,使得无向图中所有点的值的和最小. Input 第一行,两个数n,m,表示图的点数和边数. 接下来n行,每行一个数,按编号给出每个点的值(若为负数…
因为是异或运算,所以考虑对每一位操作.对于所有已知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) \)的值最小.也就是说,在这道题中的意义就是在当前位使最少…
http://www.spoj.com/problems/OPTM/ 题意: 给出一张图,点有点权,边有边权 定义一条边的权值为其连接两点的异或和 定义一张图的权值为所有边的权值之和 已知部分点的点权,自定义其余点的点权 使图的权值最小,并在此基础上使点权和最小 输出点的权值 异或——按位做 那么题目就变成了已知一些点的点权为0/1,自定义剩余点的点权0/1 使01相遇的边最少 (01相遇指的是一条边连接的两点的点权不同) 我们建立最小割模型: 先不考虑第二问 源点向已知点的点权为0的点连正无穷…
https://vjudge.net/problem/SPOJ-OPTM 题意: 给出一个无向图G,每个点 v 以一个有界非负整数 lv 作为标号,每条边e=(u,v)的权w定义为该边的两个端点的标号的异或值,即W=lu XOR lv.现已知其中部分点的标号,求使得该图的总边权和最小的标号赋值.即最小化: 思路: 这道题目在刘伯涛的论文里讲得十分的详细,看看论文就可以啦. XOR运算是根据二进制的每一位来计算的,,并且因为每一位都是相互独立的,互不影响,所以可以转化为下式: 接下来对于每一位都新…
[题目链接] 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)    …
题目描述 定义无向图中的一条边的值为:这条边连接的两个点的值的异或值. 定义一个无向图的值为:这个无向图所有边的值的和. 给你一个有n个结点m条边的无向图.其中的一些点的值是给定的,而其余的点的值由你决定(但要求均为非负数),使得这个无向图的值最小.在无向图的值最小的前提下,使得无向图中所有点的值的和最小. 输入 第一行,两个数n,m,表示图的点数和边数. 接下来n行,每行一个数,按编号给出每个点的值(若为负数则表示这个点的值由你决定,值的绝对值大小不超过10^9). 接下来m行,每行二个数a,…
题面 一个无向图,一些点有固定权值,另外的点权值由你来定. 边的值为两点的异或值,一个无向图的值定义为所有边的值之和. 求无向图的最小值 分析 每一位都互不干扰,按位处理. 用最小割算最小值 保留原图的边,容量为1 如果当前点这一位是1,就从S连向当前点,容量为∞\infty∞ 如果当前点这一位是0,就从当前点连向T,容量为∞\infty∞ 那么这样一来,分在S一边就表示选,分在T一边就表示不选.如果相邻的两点在不同的集合,中间的边就必须断掉,造成1的代价,那么刚好相当于中间的边的值. 跑一遍最…
题意:给一张无向图,每个点有其点权,边(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建容量为正无穷的边,对…