1934: [Shoi2007]Vote 善意的投票 - BZOJ

时间:2022-07-01 00:29:27

Description
幼儿园里有n个小朋友打算通过投票来决定睡不睡午觉。对他们来说,这个问题并不是很重要,于是他们决定发扬谦让精神。虽然每个人都有自己的主见,但是为了照顾一下自己朋友的想法,他们也可以投和自己本来意愿相反的票。我们定义一次投票的冲突数为好朋友之间发生冲突的总数加上和所有和自己本来意愿发生冲突的人数。 我们的问题就是,每位小朋友应该怎样投票,才能使冲突数最小?
Input
第一行只有两个整数n,m,保证有2≤n≤300,1≤m≤n(n-1)/2。其中n代表总人数,m代表好朋友的对数。文件第二行有n个整数,第i个整数代表第i个小朋友的意愿,当它为1时表示同意睡觉,当它为0时表示反对睡觉。接下来文件还有m行,每行有两个整数i,j。表示i,j是一对好朋友,我们保证任何两对i,j不会重复。
Output
只需要输出一个整数,即可能的最小冲突数。
Sample Input
3 3
1 0 0
1 2
1 3
3 2
Sample Output
1
HINT

在第一个例子中,所有小朋友都投赞成票就能得到最优解

经典的最小割模型,见算法合集之《最小割模型在信息学竞赛中的应用》.pdf

本来的意愿就是固定的点,然后每个都是不确定的点

从s向固定的0连容量inf的边,从固定的1向t连容量inf的边

从固定的0向自己对应的节点连容量1的边,从对应的节点向固定的1连容量1的边

朋友之间就互相连容量1的边

很囧的建错了两次图

1.固定的点我只连了容量1的边

2.固定的0和1向每个节点都连了边

但是有90分,应该是因为每个人都选同一种代价小于n吧(这个90分好奇葩的样子)

 const
maxn=;
inf=;
var
map:array[..maxn,..maxn]of longint;
n,m,s,t:longint; procedure init;
var
i,x,y:longint;
begin
read(n,m);
s:=;
t:=n*+;
for i:= to n do
begin
read(x);
if x= then
begin
map[s,i+n]:=inf;
map[i+n,i]:=;
end
else
begin
map[i+n,t]:=inf;
map[i,i+n]:=;
end;
end;
for i:= to m do
begin
read(x,y);
map[x,y]:=;
map[y,x]:=;
end;
end; var
dis,vh,pre,his:array[..maxn]of longint;
flow,aug:longint; procedure sap;
var
i,j,min:longint;
flag:boolean;
begin
vh[]:=t+;
i:=s;
aug:=inf;
while dis[i]<=t do
begin
his[i]:=aug;
flag:=false;
for j:=s to t do
if (map[i,j]>) and (dis[i]=dis[j]+) then
begin
flag:=true;
if aug>map[i,j] then aug:=map[i,j];
pre[j]:=i;
i:=j;
if i=t then
begin
inc(flow,aug);
while i<>s do
begin
inc(map[i,pre[i]],aug);
dec(map[pre[i],i],aug);
i:=pre[i];
end;
aug:=inf;
end;
break;
end;
if flag then continue;
min:=t;
for j:=s to t do
if (map[i,j]>) and (dis[j]<min) then min:=dis[j];
dec(vh[dis[i]]);
if vh[dis[i]]= then break;
dis[i]:=min+;
inc(vh[min+]);
if i<>s then
begin
i:=pre[i];
aug:=his[i];
end;
end;
writeln(flow);
end; begin
init;
sap;
end.

1934: [Shoi2007]Vote 善意的投票 - BZOJ的更多相关文章

  1. BZOJ 1934&colon; &lbrack;Shoi2007&rsqb;Vote 善意的投票 最小割

    1934: [Shoi2007]Vote 善意的投票 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnl ...

  2. 1934&colon; &lbrack;Shoi2007&rsqb;Vote 善意的投票

    1934: [Shoi2007]Vote 善意的投票 Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 1174  Solved: 723[Submit][S ...

  3. 最小投票BZOJ 1934&lpar;&lbrack;Shoi2007&rsqb;Vote 善意的投票-最小割&rpar;

    上班之余抽点时间出来写写博文,希望对新接触的朋友有帮助.今天在这里和大家一起学习一下最小投票 1934: [Shoi2007]Vote 好心的投票 Time Limit: 1 Sec Memory L ...

  4. 【BZOJ】1934&colon; &lbrack;Shoi2007&rsqb;Vote 善意的投票(网络流&sol;-二分图匹配)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1934 一开始我想到了这是求最小割,但是我认为这题二分图可做,将1的放在左边,0的放在右边,然后朋友连 ...

  5. BZOJ 1934 &lbrack;Shoi2007&rsqb;Vote 善意的投票(最小割)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1934 [题目大意] 每个人对于投票都有自己原来的观点:1或者0, 他可以违背自己原来的 ...

  6. ●BZOJ 1934 &lbrack;Shoi2007&rsqb;Vote 善意的投票

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=1934 题解: 题目有点迷. S向为1的点连边,为0的点向T连边,在有关系的两个点之间连双向边 ...

  7. 【刷题】BZOJ 1934 &lbrack;Shoi2007&rsqb;Vote 善意的投票

    Description 幼儿园里有n个小朋友打算通过投票来决定睡不睡午觉.对他们来说,这个问题并不是很重要,于是他们决定发扬谦让精神.虽然每个人都有自己的主见,但是为了照顾一下自己朋友的想法,他们也可 ...

  8. bzoj 1934&colon; &lbrack;Shoi2007&rsqb;Vote 善意的投票

    #include<cstdio> #include<iostream> #define M 100000 #include<cstring> using names ...

  9. bzoj 1934&colon; &lbrack;Shoi2007&rsqb;Vote 善意的投票 (最小割)

    原来是赞同的连源,原来是反对的连汇,然后是朋友的就连在一起,这样最小割就是割掉违背和谐的吧 type arr=record toward,next,cap:longint; end; const ma ...

随机推荐

  1. ThinkPHP技巧

    在php文件可以用    echo D_S()->getLastSql();来打印出  当前的sql语句

  2. jquery plugins —— datatables 增加行号

    table = $("#Table").DataTable({ "rowCallback": function (row, data, dataIndex) { ...

  3. 内存对齐-C语言struct内存占用问题

    转1个写的比较全面的. http://hubingforever.blog.163.com/blog/static/17104057920122256134681/ 本文编辑整理自:http://hi ...

  4. JS验证邮箱格式是否正确的代码

    验证邮箱格式是否正确的方法有很多,接下来为大家介绍下使用js是如何做到的 复制代码代码如下: /*  *验证邮箱格式是否正确  *参数strEmail,需要验证的邮箱  */ www.jbxue.co ...

  5. ps命令用法

    转自:http://www.cnblogs.com/peida/archive/2012/12/19/2824418.html Linux中的ps命令是Process Status的缩写.ps命令用来 ...

  6. Numpy入门 - 数组聚合运算

    本节主要讲解numpy的几个常用的聚合运算,包括求和sum.求平均mean和求方差var. 一.求和sum import numpy as np arr = np.array([[1, 2, 3], ...

  7. MacOS下安装rvm的几点注意

    如果用以下链接无法下载的话: curl -sSL https://get.rvm.io | bash -s stable #或者 curl -L https://rvm.io | bash -s st ...

  8. centos7 安装qt

    /出现can't find lGL,安装下面的库: yum install libGL yum install libGL-devel ​

  9. JavaScript中的Undefined &sol; Null 类型相关说明

    1,综述: ※Undefined 和 Null是JavaScript中的两种数据类型(其他的类型还有:Boolean, String, Number, Object). ※Undefined类型只有一 ...

  10. Http原理与实践

    Http原理 一.使用Http协议最简单的例子 1.输入URL打开网页 2.AJAX获取数据 3.img标签加载图片 二.Cache-Control 1.public.private 2.must-r ...