题目描述

小Z和其它机房同学都面临一个艰难的抉择,那就是 要不要划水?

每个人都有自己的一个意见,有的人想做题,有的人想划水。

当然,每个人只能选择一个事情做。如果一个人做的事情和他想做的不同,那么他会产生1不满意度。

更棘手的是,他们之间一些人是朋友,如果两人是朋友,但是他们做的事情不同,那么会有1不满意度产生。

小Z不想看到大家闹得不高兴,他想知道,不满意度最小能是多少?

输入输出格式

输入格式:

第一行两个数字n,m 分别表示有n个人和m对朋友关系

第二行n个0/1,1表示想做题,0表示想划水。

然后是m行,每行两个数字a,b 表示a和b是朋友

输出格式:

输出只包含一个数字,表示最小的不满意度。

解析:

考虑最小割

如果一个选项是1,从S向它连流量1的边,

否则从它向T连流量1的边.

每对关系之间互相连流量1的边.

然后跑一遍最大流求它的最小割......

代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#define S 0
#define T 301
#define INF 2000000000
using namespace std;
inline int read(){
 int x = ,f = ; char ch = getchar();
 while(ch < ''||ch > '') {if(ch == '-') f =-; ch = getchar();}
 while(ch >=''&&ch <='') {x = x*+ch-''; ch = getchar();}
 return x * f;
}
int n,m,q[T+],top=,head[T+],d[T+],cnt=,ans=;
struct edge{int to,next,w;}e[T*T*+];
void ins(int f,int t,int w){
 e[++cnt]=(edge){t,head[f],w};head[f]=cnt;
 e[++cnt]=(edge){f,head[t],};head[t]=cnt;
}
int dfs(int x,int f){
 if(x==T) return f;
 int used=;
 for(int i=head[x];i;i=e[i].next)
  if(e[i].w&&d[e[i].to]==d[x]+){
   int w=dfs(e[i].to,min(f-used,e[i].w));
   used+=w; e[i].w-=w; e[i^].w+=w;
   if(used==f) return f;
  }
 return d[x]=-,used;
}
bool bfs(){
 memset(d,,sizeof(d)); int i,j;
 for(d[q[top=i=]=S]=;i<=top;++i)
  for(j=head[q[i]];j;j=e[j].next)
   if(e[j].w&&!d[e[j].to])
    d[q[++top]=e[j].to]=d[q[i]]+;
 return d[T];
}
int main(){
 n=read(); m=read();
 for(int i=;i<=n;i++) read()?ins(S,i,):ins(i,T,);
 int x,y;
 for(int i=;i<=m;i++){
  x=read(); y=read();
  ins(x,y,); ins(y,x,);
 }
 while(bfs()) ans+=dfs(S,INF);
 printf("%d\n", ans);
 return ;
}
 

【0521模拟赛】小Z爱划水的更多相关文章

  1. 小Z爱划水(NOIP信(sang)心(bin)赛)From FallDream

    题目: 小Z在机房.他和其它机房同学都面临一个艰难的抉择,那就是 要不要划水? 每个人都有自己的一个意见,有的人想做题,有的人想划水. 当然,每个人只能选择一个事情做.如果一个人做的事情和他想做的不同 ...

  2. 【0521模拟赛】小Z爱数学

    题目描述 小Z想求F(n,k),F(n,k)表示n的所有因数pi中,满足n/pi <= k 的和. 小Z发现还是很水,所以他决定加大难度. 求 小Z还准备了很多个询问.现在你来解决一下吧. 输入 ...

  3. 【20170920校内模拟赛】小Z爱学习

    所有题目开启-O2优化,开大栈空间,评测机效率为4亿左右. T1 小 Z 学数学(math) Description ​ 要说小 Z 最不擅长的学科,那一定就是数学了.这不,他最近正在学习加法运算.老 ...

  4. 小Z爱图论(NOIP信(sang)心(bin)赛)From FallDream

    题目: 小Z最近喜欢上了图论,于是他研究了一下图的连通性问题.但是他遇到了一个难题. 给定一个n个点的有向图,求有多少点对(i,j)满足从i点出发能到达点j ? 小Z仅会简单的朴素算法,所以他想问问你 ...

  5. 小Z爱序列(NOIP信(sang)心(bin)赛)From FallDream(粗制单调队列&单调栈的算法解析)

    原题: 小Z最擅长解决序列问题啦,什么最长公共上升然后下降然后上升的子序列,小Z都是轻松解决的呢. 但是小Z不擅长出序列问题啊,所以它给了你一道签到题. 给定一个n个数的序列ai,你要求出满足下述条件 ...

  6. Java 第十一届 蓝桥杯 省模拟赛 小明的城堡

    小明用积木搭了一个城堡. 为了方便,小明在搭的时候用的是一样大小的正方体积本,搭在了一个 n 行 m 列的方格图上,每个积木正好占据方格图的一个小方格. 当然,小明的城堡并不是平面的,而是立体的.小明 ...

  7. Java 第十一届 蓝桥杯 省模拟赛 小明植树(DFS)

    小明植树 题目 问题描述 小明和朋友们一起去郊外植树,他们带了一些在自己实验室精心研究出的小树苗. 小明和朋友们一共有 n 个人,他们经过精心挑选,在一块空地上每个人挑选了一个适合植树的位置,总共 n ...

  8. 2017-10-5模拟赛T2 小Z爱排序(sorting.*)

    Description Solution 比赛时找到了规律,但是没有证出来……(当然最后还是AC了……) 显然没有被操作的数在排好序的序列中一定是连续的一段. 所以,没有被操作的数一定从左到右连续地递 ...

  9. noip模拟赛 小Y的问题

    [问题描述]有个孩子叫小 Y,一天,小 Y 拿到了一个包含 n 个点和 n-1 条边的无向连通图, 图中的点用 1~n 的整数编号.小 Y 突发奇想,想要数出图中有多少个“Y 字形”.一个“Y 字形” ...

随机推荐

  1. 高性能Golang研讨会【精】

    by Dave Cheney 概观 本次研讨会的目标是为您提供诊断Go应用程序中的性能问题并进行修复所需的工具. 通过这一天,我们将从小工作 - 学习如何编写基准,然后分析一小段代码.然后走出去讨论执 ...

  2. python class 中__next__用法

    class A(): def __init__(self,b): self.b=b # def __iter__(self): # 这个函数可以用,表示迭代标志,但也可以省略 # return sel ...

  3. Nikitosh 和异或(trie树)

    题目: #10051. 「一本通 2.3 例 3」Nikitosh 和异或 解析: 首先我们知道一个性质\(x\oplus x=0\) 我们要求\[\bigoplus_{i = l}^ra_i\]的话 ...

  4. [HNOI2012]矿场搭建 (点双连通)

    题目 [HNOI2012]矿场搭建 解析 这个题做的我十分自闭.. 没看出这个是个点双,然后一晚上+半上午.. 一看肯定和割点有关,我们找到所有的点双,会发现有这么几种情况 连通块中一个割点也没有,这 ...

  5. 【开发工具】- myeclipse安装主题

    你想用IDEA那样炫酷的符合90后气质的主题吗?废话不多说,按照下边步骤就可以安装像IDEA一样超级炫酷的主题. 下载主题 1.进入插件官网(http://eclipsecolorthemes.org ...

  6. react native报错处理com.android.build.api.transform.TransformException: com.android.builder.dexing.DexArchiveBuilderException: com.android.builder.dexing.DexArchiveBuilderException: Failed to process

    背景:最近准备在使用react-native开发的app中接入友盟,来进行用户行为统计,分享,授权登录等操作. 在使用的过程中,遇到了一些错误信息,在此记录一下. 在修改android目录下的buil ...

  7. tomcat 安装记录 centos7 开放对外端口

    //端口查询 [root@CentOS7 bin]# firewall-cmd --query-port=9090/tcp no //添加端口 [root@CentOS7 bin]# firewall ...

  8. 【Intellij Idea】Intellij Idea 某个提示功能disable,想恢复怎么做

    比如,恢复实现抽象类和接口的功能, 打开idea设置-->editor -->interntions 搜索 implement,然后将空白的打上勾

  9. vim 配置遇到的问题

    1 使用 Vundle 安装插件时提示输入 github 账户密码 .vimrc 中 Plugin ‘路径' 的路径填写错误,仔细检查下 2 在 vim 中执行 shell 命令(如 ls)会闪退 . ...

  10. 微信小程序~模板template引用

    当您的项目需要多次使用同一个布局和样式的时候,您就可以考虑使用template(模板)来减少冗余代码. 使用方式: 1.新建一个template文件夹来存放您的通用模板: 2.在文件夹里面新建一个wx ...