2341 善意的投票

2007年省队选拔赛上海市队选拔赛

时间限制: 5 s
空间限制: 128000 KB
题目等级 : 大师 Master
 

题目描述 Description

幼儿园里有n个小朋友打算通过投票来决定睡不睡午觉。对他们来说,这个问题并不是很重要,于是他们决定发扬谦让精神。虽然每个人都有自己的主见,但是为了照顾一下自己朋友的想法,他们也可以投和自己本来意愿相反的票。我们定义一次投票的冲突数为好朋友之间发生冲突的总数加上和所有和自己本来意愿发生冲突的人数。

我们的问题就是,每位小朋友应该怎样投票,才能使冲突数最小?

输入描述 Input Description

文件的第一行只有两个整数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 Description

只需要输出一个整数,即可能的最小冲突数。

样例输入 Sample Input

3 3

1 0 0

1 2

1 3

3 2

样例输出 Sample Output

1

数据范围及提示 Data Size & Hint

2≤n≤300,1≤m≤n(n-1)/2。

题解

惯性思维真是个要死的东西

在小M的作物的题解里有人说这两个题很像 于是思考陷入混乱(???

这个题还是简单很多的(大概是洗礼过一次了的原因

如果不想睡觉 从S连条1 否则往T连条1 这是违背自己意愿的代价

然后每对塑料姐妹花之间连双向边,边权为1 代表迁就的代价

然后跑最小割

#include<cmath>
#include<queue>
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
const int INF=*1e9+;
struct emm{
int e,f,v;
}a[];
int h[];
int tot=;
int s,t;
void con(int x,int y,int w)
{
a[++tot].f=h[x];
h[x]=tot;
a[tot].e=y;
a[tot].v=w;
a[++tot].f=h[y];
h[y]=tot;
a[tot].e=x;
return;
}
queue<int>q;
int d[];
inline bool bfs()
{
memset(d,,sizeof(d));
d[s]=;
q.push(s);
while(!q.empty())
{
int x=q.front();q.pop();
for(int i=h[x];i;i=a[i].f)
if(!d[a[i].e]&&a[i].v)
{
d[a[i].e]=d[x]+;
q.push(a[i].e);
}
}
return d[t];
}
int dfs(int x,int al)
{
if(x==t||!al)return al;
int fl=;
for(int i=h[x];i;i=a[i].f)
if(d[a[i].e]==d[x]+&&a[i].v)
{
int f=dfs(a[i].e,min(a[i].v,al));
if(f)
{
fl+=f;
al-=f;
a[i].v-=f;
a[i^].v+=f;
if(!al)break;
}
}
if(!fl)d[x]=-;
return fl;
}
int main()
{
int n,m;
scanf("%d%d",&n,&m);
s=,t=n+;
for(int i=;i<=n;++i)
{
int x;
scanf("%d",&x);
if(x==)con(s,i,);
else con(i,t,);
}
for(int i=;i<=m;++i)
{
int x,y;
scanf("%d%d",&x,&y);
con(x,y,);
con(y,x,);
}
long long ans=;
while(bfs())ans+=dfs(s,INF);
cout<<ans;
return ;
}

「SHOI2007」「Codevs2341」 善意的投票(最小割的更多相关文章

  1. BZOJ 1934: [Shoi2007]Vote 善意的投票 最小割

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

  2. 【BZOJ2768】[JLOI2010]冠军调查/【BZOJ1934】[Shoi2007]Vote 善意的投票 最小割

    [BZOJ2768][JLOI2010]冠军调查 Description 一年一度的欧洲足球冠军联赛已经进入了淘汰赛阶段.随着卫冕冠军巴萨罗那的淘汰,英超劲旅切尔西成为了头号热门.新浪体育最近在吉林教 ...

  3. 最小投票BZOJ 1934([Shoi2007]Vote 善意的投票-最小割)

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

  4. bzoj1934 Vote 善意的投票 最小割(最大匹配)

    题目传送门 题目大意:很多小朋友,每个小朋友都有自己的立场,赞成或者反对,如果投了和自己立场不同的票会得到一个能量.又有很多朋友关系,如果一个人和他的一个朋友投的票不同,也会得到一个能量,现在问,通过 ...

  5. P2057 [SHOI2007]善意的投票 最小割

    $ \color{#0066ff}{ 题目描述 }$ 幼儿园里有n个小朋友打算通过投票来决定睡不睡午觉.对他们来说,这个问题并不是很重要,于是他们决定发扬谦让精神.虽然每个人都有自己的主见,但是为了照 ...

  6. 【bzoj2768/bzoj1934】[JLOI2010]冠军调查/[Shoi2007]Vote 善意的投票 最小割

    bzoj2768 题目描述 一年一度的欧洲足球冠军联赛已经进入了淘汰赛阶段.随着卫冕冠军巴萨罗那的淘汰,英超劲旅切尔西成为了头号热门.新浪体育最近在吉林教育学院进行了一次大规模的调查,调查的内容就是关 ...

  7. B1934 [Shoi2007]Vote 善意的投票 最小割

    一开始不太会,结果看完题解就是一个建图的网络流.然后就结了. 题干: 题目描述 幼儿园里有n个小朋友打算通过投票来决定睡不睡午觉.对他们来说,这个问题并不是很重要,于是他们决定发扬谦让精神.虽然每个人 ...

  8. P2057 善意的投票 最小割理解

    实现时这样建图:直接将S连向同意的人,T连向不同意的人,若两人是朋友,则在他们之间连一条双向边 #include<bits/stdc++.h> #define il inline usin ...

  9. 众安「尊享e生」果真牛的不可一世么?

    近日,具有互联网基因的.亏损大户(成立三年基本没盈利,今年二季度末亏损近4亿,你能指望它多厉害?).财产险公司—众安推出“尊享e生”中高端医疗保险(财险公司经营中高端医疗真的很厉害?真的是中高端医疗险 ...

随机推荐

  1. web信息搜索之目标扫描篇

    https://blog.csdn.net/dongfei2033/article/details/78175421

  2. .net core webapi jwt 更为清爽的认证 ,续期很简单

    我的方式非主流,控制却可以更加灵活,喜欢的朋友,不妨花一点时间学习一下 jwt认证分为两部分,第一部分是加密解密,第二部分是灵活的应用于中间件,我的处理方式是将获取token放到api的一个具体的co ...

  3. 如何快速的知道Maven插件的命令行输入参数

    用命令行使用Maven的插件时,-D表示属性的输入,-P表示构建配置文件的输入. 比如要使用package生命周期阶段对Application项目进行打包jar时,查找方式如下: 1.由于packag ...

  4. 使用图片作为textview组件的背景

    <TextView android:layout_gravity="center" android:layout_width="100dp" androi ...

  5. [Node.js] Trigger a File Download in Express

    Downloading and saving a file is a common scenario when building out your web application. Using Exp ...

  6. Version和Build的差别

    [1]概念 iOS的版本号号.一个叫做Version,一个叫做Build,这两个值都能够在Xcode 中选中target,点击"Summary"后看到. Version在plist ...

  7. Spring4+SpringMVC+Hibernate4整合入门与实例

    配置web.xml <? xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi=&q ...

  8. android 内部文件读取

    Android 文件管理方法 Android使用的是基于Linux的文件系统,对于文件的訪问和管理是通过权限设置来限制的. 在Linux系统中,文件权限分别描写叙述了创建者.同组用户和其它用户对文件的 ...

  9. Raw-OS源代码分析之消息系统-Queue_Buffer

    分析的内核版本号截止到2014-04-15,基于1.05正式版.blogs会及时跟进最新版本号的内核开发进度,若源代码凝视出现"???"字样,则是未深究理解部分. Raw-OS官方 ...

  10. java开始到熟悉66-69

    本次内容:DateFormat类 1.DateFormat类 package array; /** * 时间和字符串之间的转化 */ import java.text.DateFormat; impo ...