4874: 筐子放球

Time Limit: 10 Sec Memory Limit: 256 MB
Submit: 264 Solved: 187
[Submit][Status][Discuss]
Description

小N最近在研究NP完全问题,小O看小N研究得热火朝天,便给他出了一道这样的题目:
有 n 个球,用整数 1 到 n 编号。还有 m 个筐子,用整数1到m编号。
每个球只能放进特定的两个筐子之一,第 i 个球可以放进的筐子记为 Ai 和 Bi 。
每个球都必须放进一个筐子中。
如果一个筐子内有奇数个球,那么我们称这样的筐子为半空的。
求半空的筐子最少有多少个。
小N看到题目后瞬间没了思路,站在旁边看热闹的小I嘿嘿一笑:”水题!”
然后三言两语道出了一个多项式算法。
小N瞬间就惊呆了,三秒钟后他回过神来一拍桌子:
“不对!这个问题显然是NP完全问题,你算法肯定有错!”
小I浅笑:”所以,等我领图灵奖吧!”
小O只会出题不会做题,所以找到了你–请你对这个问题进行探究,并写一个程序解决此题。
Input

第一行两个整数 n,m
接下来 n 行,第 i + 1 行有两个整数 Ai , Bi ,表示第 i 个球可以放的两个筐子。保证 Ai 不等于 Bi
1 <= n,m <= 2 * 10^5,1 <= Ai,Bi <= m
Output

第一行一个整数表示半空的筐子的最小值。
Sample Input

4 3

1 2

2 3

1 3

1 2
Sample Output

0

1,3 号球都放在 1 号筐子,2,4 号球都放在 2 号筐子。
HINT

各位不妨考虑下,如果要求输出方案应该怎么写.

Source

[Submit][Status][Discuss]

把筐子看作点,一个球看作一条边
那么题目等价于给每条边定向,使得最终入度为奇数的点尽量少
可以证明,答案就是含有奇数条边的连通块个数
对于每个连通块,考虑它的任意一棵生成树
对于非树边,随意定向
从树的叶子节点开始往上搜索,每一条连向父亲的边根据儿子定向
优先保证儿子节点入度为偶数
那么,如果总边数为偶数,显然可以找到一种方案让所有点入度为偶数
如果总边数为奇数显然最后会剩下一个点
于是病茶集瞎搞搞就好啦。。。

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;const int maxn = 2E5 + 20;int n,m,Ans,fa[maxn],siz[maxn];inline int getfa(int k) {return k == fa[k] ? k : fa[k] = getfa(fa[k]);}inline int getint()
{char ch = getchar(); int ret = 0;while (ch < '0' || '9' < ch) ch = getchar();while ('0' <= ch && ch <= '9')ret = ret * 10 + ch - '0',ch = getchar();return ret;
}int main()
{#ifdef DMCfreopen("DMC.txt","r",stdin);#endifn = getint(); m = getint();for (int i = 1; i <= m; i++) fa[i] = i;for (int i = 1; i <= n; i++){int x = getint(),y = getint();int fx = getfa(x),fy = getfa(y);if (fx == fy) ++siz[fx];else fa[fy] = fx,siz[fx] += siz[fy] + 1;}for (int i = 1; i <= m; i++)if (i == fa[i] && (siz[i] & 1)) ++Ans;cout << Ans << endl;return 0;
}

4874: 筐子放球相关推荐

  1. 【集合论】Stirling 子集数 ( 斯特林子集数概念 | 放球模型 | Stirling 子集数递推公式 | 划分的二元关系 加细关系 )

    文章目录 一.Stirling 子集数 二.放球模型 三.Stirling 子集数递推公式 四.Stirling 子集数示例 ( 四元集等价关系个数 ) 五.划分的二元关系 加细关系 一.Stirli ...

  2. 放球问题 组合数学 转自百度百科

    放球问题是指把 n个球放到 m个盒子里的方案数.它是组合数学的一个非常重要的问题.根据球是否相同,盒子是否有区别,是否允许有空盒以及n与m 的大小关系,放球问题可分成 16 个子问题.不同情况总结见下 ...

  3. 组合数学之放球问题 【附斯特林数】

    放球问题在组合数学中是一个经典问题,在ACM比赛中也经常会出现类似的题目,这里做一个归纳. 我们假定现在有n个球,要放到m个盒子中,根据情况的不同主要可以分为一下8类(这里确保n>=m) 编号 ...

  4. 合理放球(递推之第二类斯特林数 C++)

    合理放球 总时间限制: 1000ms 内存限制: 65536kB 描述 n个各不相同球放入m个相同的盒子里,球全部放完后,要求最后没有空盒!求不同的放法总数. 输入 一行两个数n和m n表示球数,m表 ...

  5. 5个球放入3个箱子_排列组合问题,把5个相同的球放到三个相同的盒子里,要求每个盒子都有球,则不同的放球方法是多少?...

    一个一个的列出来就好了. 2种.311和221 ----............... 修改. 这本来就是从一个一个列举出来的.要用到排列组合的都是一些特定的情况.不过这道题貌似用不上. 比如5个球变 ...

  6. 排列组合与盒子放球问题

    文章目录 排列组合 定义 组合公式 1.证明 C n m = C n n − m C_n^m=C_n^{n-m} Cnm​=Cnn−m​ 2.证明 C n m C m k = C n k C n − ...

  7. 【网络流24题】D、魔术球问题(有向无环图的最小路径覆盖、思维)

    D.魔术球问题(有向无环图的最小路径覆盖.思维)[省选/NOI- ] P2765 魔术球问题 [问题分析] 枚举答案转化为判定性问题,然后最小路径覆盖,可以转化成二分图最大匹配,从而用最大流解决. [ ...

  8. 【组合数学】指数型母函数 应用 ( 多重集排列问题 | 不同球放在不同盒子里 | 奇/偶数序列的指数生成函数推导 )

    文章目录 多重集全排列公式 指数型母函数 处理多重集排列问题 引入 指数型母函数 处理多重集排列问题 公式推导 指数型母函数 处理 有限数字串问题 指数型母函数 处理 n 位数字串问题 指数型母函数 ...

  9. 网络流24题-魔术球问题

    魔术球问题 时空限制1000ms / 128MB 题目描述 «问题描述: 假设有n根柱子,现要按下述规则在这n根柱子中依次放入编号为1,2,3,...的球. (1)每次只能在某根柱子的最上面放球. ( ...

  10. 洛谷 - P2765 魔术球问题(最大流+残余网络上的最大流+路径打印)

    题目链接:点击查看 题目大意:给出n个柱子,问若按照规则摆放,最多能放多少个球,规则如下: 每次只能在某根柱子的最上面放球 在同一根柱子中,任何2个相邻球的编号之和为完全平方数 并输出方案 题目分析: ...

最新文章

  1. 洛谷P3723 [AH2017/HNOI2017]礼物(FFT)
  2. docker之Dockerfile
  3. 项目: 双人反弹球游戏
  4. 如何使用自定义端口运行 Flutter Web
  5. 使用Buildroot为Nxp i.mx6ul制作文件系统
  6. 多种方法解决Exchange 2010 EMC批量启用邮箱之后出..
  7. 关于夏季及雷雨天气的MODEM、路由器使用注意事项
  8. 数组元素替换_Linux Shell 通俗简要的讲解数组操作
  9. phpcmsV9 用户vip过期后,自动降级的办法 - 代码篇
  10. 【leetcode】Permutations
  11. 浮动Float(HTML、CSS)
  12. 用 Python 可视化分析全球火山分布,发现了这些有趣的现象
  13. 双目测距原理 matlab,双目测距的基本原理
  14. 情感在语文教育中的作用
  15. vitamio视频框架使用详解
  16. 西部数码虚拟服务器,西部数码虚拟主机301转向功能介绍
  17. chrome浏览器打开网址找不到服务器IP
  18. 1665. 计算数字
  19. 论信息系统人力资源管理
  20. UVa 12195 - Jingle Composing

热门文章

  1. saas模式的外贸建站比较
  2. python基础1:数据类型和标识符命名规范
  3. python中def demo是什么意思_Python def函数的定义、使用及参数传递实现代码
  4. golang GC机制
  5. 货币金融学学习笔记(第4篇中央银行与货币操作政策)
  6. 电脑主板线路连接图解_电脑主板连接线图解
  7. 基于air720等air7xx的4G模块luat程序下载
  8. html批量处理图片尺寸,如何批量修改图片尺寸
  9. 客户端修改服务器的cookie,客户端与服务器cookie
  10. Python统计字符串中的中英文字符、数字空格,特殊字符 , 空格的个数