【SHOI2007】bzoj1934 善意的投票

2023-11-07 20:18

本文主要是介绍【SHOI2007】bzoj1934 善意的投票,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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 只需要输出一个整数,即可能的最小冲突数。

两派人分别向源或汇连边,朋友之间连双向边,然后求最小割。
S和T代表两个阵营,之间的割就是冲突数。另外,如果有一个人改变阵营,还要再付出一条割的代价。

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int s=305,t=306,oo=0x3f3f3f3f;
int fir[310],ne[600010],to[600010],w[600010],n,m,tot,f[310],que[310];
void add(int u,int v,int x)
{tot++;ne[tot*2]=fir[u];fir[u]=tot*2;to[tot*2]=v;w[tot*2]=1;ne[tot*2+1]=fir[v];fir[v]=tot*2+1;to[tot*2+1]=u;w[tot*2+1]=x;
}
bool bfs()
{int hd,tl,u,v,i;memset(f,0,sizeof(f));que[f[s]=hd=tl=1]=s;while (hd<=tl){u=que[hd++];for (i=fir[u];i;i=ne[i])if (w[i]&&!f[v=to[i]]){f[v]=f[u]+1;que[++tl]=v;}}return f[t];
}
int dfs(int u,int lim)
{int i,v,x,ret=0;if (u==t) return lim;for (i=fir[u];i&&ret<lim;i=ne[i])if (w[i]&&f[v=to[i]]==f[u]+1){x=dfs(v,min(lim-ret,w[i]));w[i]-=x;w[i^1]+=x;ret+=x;}if (!ret) f[u]=0;return ret;
}
int main()
{int i,x,y,ans=0;scanf("%d%d",&n,&m);for (i=1;i<=n;i++){scanf("%d",&x);if (x) add(s,i,0);else add(i,t,0);}while (m--){scanf("%d%d",&x,&y);add(x,y,1);}while (bfs())while (x=dfs(s,oo))ans+=x;printf("%d\n",ans);
}

这篇关于【SHOI2007】bzoj1934 善意的投票的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/366040

相关文章

投票

★ 实验任务 在遥远的火星上,生活着 2 * n 个快乐的火星人。 他们的名字可以用一个整数来表示, 范围是 0 到 2^30 - 1。他们希望知道谁是这个火星上最快乐的火星人。 所以他们决定进行 一次投票,每个火星人投出一张票,票上写着它认为的最快乐的火星人的名字。如果有一个 火星人被大于 n 个火星人投票,那么这个火星人被认为是最快乐的火星人。否则, 不存在最 快乐的火星人, 火星人们一样快

Leetcode刷题笔记:多数元素(摩尔投票算法最通俗的理解)

关键点: 给定的数组总是存在多数元素。出现次数大于 ⌊ n / 2 ⌋ \lfloor n/2\rfloor ⌊n/2⌋ 说明下面这种情况不会出现在测试用例中: [3,3,3,2,2,2,4] 或 [3,3,3,2,2,2] 也就是刚好有2个频率等于 ⌊ n / 2 ⌋ \lfloor n/2\rfloor ⌊n/2⌋ 的元素 按照进阶要求,设计一个时间复杂度为 O(n)、空

【Java 搜索二维矩阵 I II,多数元素 I II,分治法 二分法 摩尔投票法】

搜索二维矩阵 I II,多数元素,分治法 & 二分法 & 摩尔投票法 题目1:力扣-搜索二维矩阵[https://leetcode.cn/problems/search-a-2d-matrix/description/](https://leetcode.cn/problems/search-a-2d-matrix/description/)分治-排除法分治排除法-代码实现 二分法二分法-代

投票多功能小程序(ThinkPHP+Uniapp+FastAdmin)

🎉你的决策小助手! 支持图文投票、自定义选手报名内容、自定义主题色、礼物功能(高级授权)、弹幕功能(高级授权)、会员发布、支持数据库私有化部署,Uniapp提供全部无加密源码。​ 一、引言:为什么我们需要多功能投票小程序? 在快节奏的现代生活中,我们经常面临各种选择和决策。无论是团队活动的选择、家庭出游的目的地,还是朋友间的意见征集,都需要一个高效、便捷的投票工具来辅助我们。而“多功能

【Rust日报】2021-11-16 「投票」为Rust标准库添加控制台输入API

【投票】为Rust标准库添加控制台输入API Simple Console Input API for Standard Library StrawPoll.com: 我们正试图将一个简单的控制台输入API推送到标准库中,以使编写简单的命令行输入变得更容易,我们需要社区决定实现的高级程度。因为这是一个相当有争议的话题(双方的数量非常均匀),所以这次投票就是为了解决这个问题。 注意:下面的例子

礼物道具功能投票小程序源码系统 PHP+MySQL组合开发 带完整的安装代码包以及搭建教程

系统概述 在移动互联网时代,小程序以其轻便、快速、无需安装的特点,成为越来越多企业和个人推广、互动、营销的重要工具。礼物道具功能投票小程序源码系统,基于PHP和MySQL组合开发,是一款功能强大、易于扩展的小程序后端支持系统。该系统不仅为小程序提供了礼物道具购买、赠送、使用的完整功能链,还集成了投票功能,使用户能够轻松发起、参与各类投票活动,极大地丰富了小程序的互动性和趣味性。 代码示例

【洛谷】P4263:投票统计

传送门  嗯... 首先看一下这道题。 投票统计 题目描述 为了总结过去一段时间的命题工作,王队长组织了“我最喜欢的题目”评选活动,并邀请各位选手给题目进行投票。 具体来说,每道题目有一个正整数作为它的编号,一共有 n 名选手给它们进行投票,每位选手投且仅投给一道题,其中第 i 位选手所投票的题目编号为 ai​。 由于投票的选手众多,所以王队长请你来帮忙统计得票数。你需要找出收获选手投票最

公众号如何发布一个投票活动

用公众号的人或团队越来越多,对粉丝做个小调查和建议,那就在所难免。公众号的投票活动可以让你得以实现。 那么怎样发布一个投票活动呢。步骤如下: 第一,登陆微信公众号后台,点击“功能”-“投票功能”。 第二,选择新建投票,设置投票名称,投票截止时间信息。当然这个时间以后是可以更改的。 第三,设置投票的问题名称,问题类型是单选还是多选,并设置投票选项;若是多个问题,在下面添加“添加问题”即可;也

【全开源】多功能投票小程序源码(Uniapp+ThinkPHP+FastAdmin)

💥**【热门推荐】多功能投票小程序,一键解决你的选择难题!**💥 基于ThinkPHP+FastAdmin+Uniapp开发的多功能系统,支持图文投票、自定义选手报名内容、自定义主题色、礼物功能(高级授权)、弹幕功能(高级授权)、会员发布、支持数据库私有化部署,Uniapp提供全部无加密源码。 🌟 引子:选择恐惧症者的福音 😖你是不是经常在面对多个选项时犹豫不决,无法快速做出决定

NBA投票系统(4):投票数据条形图显示

这一部分主要是用到了一些img库函数进行绘图,这里只给出代码,相关函数使用方法可以参考PHP帮助文档: <?php/*************************************************************************1.Database query to get vote info*********************************