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 代表迁就的代价

然后跑最小割

  1. #include<cmath>
  2. #include<queue>
  3. #include<cstdio>
  4. #include<cstring>
  5. #include<iostream>
  6. using namespace std;
  7. const int INF=*1e9+;
  8. struct emm{
  9. int e,f,v;
  10. }a[];
  11. int h[];
  12. int tot=;
  13. int s,t;
  14. void con(int x,int y,int w)
  15. {
  16. a[++tot].f=h[x];
  17. h[x]=tot;
  18. a[tot].e=y;
  19. a[tot].v=w;
  20. a[++tot].f=h[y];
  21. h[y]=tot;
  22. a[tot].e=x;
  23. return;
  24. }
  25. queue<int>q;
  26. int d[];
  27. inline bool bfs()
  28. {
  29. memset(d,,sizeof(d));
  30. d[s]=;
  31. q.push(s);
  32. while(!q.empty())
  33. {
  34. int x=q.front();q.pop();
  35. for(int i=h[x];i;i=a[i].f)
  36. if(!d[a[i].e]&&a[i].v)
  37. {
  38. d[a[i].e]=d[x]+;
  39. q.push(a[i].e);
  40. }
  41. }
  42. return d[t];
  43. }
  44. int dfs(int x,int al)
  45. {
  46. if(x==t||!al)return al;
  47. int fl=;
  48. for(int i=h[x];i;i=a[i].f)
  49. if(d[a[i].e]==d[x]+&&a[i].v)
  50. {
  51. int f=dfs(a[i].e,min(a[i].v,al));
  52. if(f)
  53. {
  54. fl+=f;
  55. al-=f;
  56. a[i].v-=f;
  57. a[i^].v+=f;
  58. if(!al)break;
  59. }
  60. }
  61. if(!fl)d[x]=-;
  62. return fl;
  63. }
  64. int main()
  65. {
  66. int n,m;
  67. scanf("%d%d",&n,&m);
  68. s=,t=n+;
  69. for(int i=;i<=n;++i)
  70. {
  71. int x;
  72. scanf("%d",&x);
  73. if(x==)con(s,i,);
  74. else con(i,t,);
  75. }
  76. for(int i=;i<=m;++i)
  77. {
  78. int x,y;
  79. scanf("%d%d",&x,&y);
  80. con(x,y,);
  81. con(y,x,);
  82. }
  83. long long ans=;
  84. while(bfs())ans+=dfs(s,INF);
  85. cout<<ans;
  86. return ;
  87. }

「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. 深究Spring中Bean的生命周期

    前言 这其实是一道面试题,是我在面试百度的时候被问到的,当时没有答出来(因为自己真的很菜),后来在网上寻找答案,看到也是一头雾水,直到看到了<Spring in action>这本书,书上 ...

  2. 【Java TCP/IP Socket】基于线程池的TCP服务器(含代码)

    了解线程池 在http://blog.csdn.net/ns_code/article/details/14105457(读书笔记一:TCP Socket)这篇博文中,服务器端采用的实现方式是:一个客 ...

  3. axis2调用WSDL接口

    public static JSONObject sendWsdl(String url,String xmlStr){ JSONObject res=new JSONObject(); try { ...

  4. iOS开发 当前时间 时间戳 转换

    1.今天在做一个webservice的接口的时候,被要求传一个时间戳过去,然后就是开始在Google上找 2.遇到两个问题,一,当前时间转化为时间戳,二,获取的当前时间和系统的时间相差8个小时 一,转 ...

  5. Angularjs: call other scope which in iframe

    Angularjs: call other scope which in iframe -------------------------------------------------------- ...

  6. C# 实体类序列化与反序列化一 (XmlSerializer)

    /// <summary> /// 实体类序列化的反序列化的类 /// </summary> /// <typeparam name="T">& ...

  7. Solidworks如何创建投影曲线

    画好草图之后(草图是在上视基准面上画的)然后点击曲线,投影曲线   面选择要投影的曲面,然后就得到了平面曲线在曲面上的投影得到的空间曲线   注意这种方法对于开环轮廓也是可以用的,比如下面,我定义一个 ...

  8. 零售连锁行业SOA化解决方式

    零售连锁行业面临的问题 1.店铺老化.营销手段单一落后. 2.管理模式的不科学,我国零售企业在起家时候并没有一套完好的科学的管理及考评系统的存在.而且在企业的发展过程中并未学习建立.对于人才的吸引.培 ...

  9. 微信小程序 开发环境配置

    1.注册小程序 (1)微信公众平台:https://mp.weixin.qq.com/(2)立即注册 (3)流程 (4)小程序注册 (5)填写相关信息,并去邮箱激活.这样小程序的账号就注册完成了. 2 ...

  10. HashMap底层原理以及与ConCurrentHashMap区别

    HashMap基于hashing原理,我们通过put()和get()方法储存和获取对象.当我们将键值对传递给put()方法时,它调用键对象的hashCode()方法来计算hashcode,让后找到bu ...