4874: 筐子放球

Time Limit: 10 Sec  Memory Limit: 256 MB
Submit: 270  Solved: 191
[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]
题解:其实我没怎么看懂QAQ  我们把筐子看作点 把求看做边 便可以认为一个具有奇数条边的连通块便是一个答案,听起来很简单吧QAQ 贴上代码:

#include<bits/stdc++.h>
#define ll long long
const int INF = 0x7fffffff;
const double eps = 1e-5;
using namespace std;
int read()
{int x = 0 , f = 1; char ch = getchar();while(ch<'0'||ch>'9') {if(ch=='-')f*=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=x*10+(ch-'0');ch=getchar();}return x * f;
}
int nedge=0,p[400001],nex[400001],head[400001],n,m;
bool b[200001];
int sum=0;
inline void addedge(int a,int b){p[++nedge]=b;nex[nedge]=head[a];head[a]=nedge;
}
void dfs(int x)
{for(int k = head[x]; k; k = nex[k]){++sum;if(!b[p[k]]) b[p[k]]=true,dfs(p[k]);}
}
int main()
{n = read() , m = read();for(int i = 1 ; i <= n ; i++){int x = read() , y = read();addedge(x,y),addedge(y,x);    //把第i个球能投进的两个框连起来 }int ans = 0;for(int i = 1 ; i <= m ; i++)if(!b[i]){b[i]=true;   sum=0; dfs(i);sum>>=1;if(sum&1) ans++;}printf("%d",ans);
}

BZOJ4874:筐子放球相关推荐

  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. PHP如何识别系统语言或浏览器语言
  2. C++箴言:理解inline化的介入和排除
  3. NoSQL分布式数据库的独家见解- Adam Fowler
  4. C++:52---多重继承
  5. Python机器学习:KNN算法之01KKN基础
  6. PHP学习总结(13)——PHP入门篇之常量
  7. 跨域调用webapi web端跨域调用webapi
  8. 小黑笔记:transe模型
  9. 炫酷动态特效HTML实现源码【完整源码分享】
  10. Python技巧:双击python文件打开.py(博主自测完整版)
  11. java中gc是什么_java什么是gc
  12. VS2019+OpenCV4.5 鱼眼相机图像畸变矫正
  13. MySQL数据库——MySQL是什么?它有什么优势?
  14. JAVA大华摄像头抓拍与API接口集成
  15. PHP:安装fileinfo扩展
  16. 六个计算机硬件商标名称,10nm显卡可能有名字了,Intel悄悄申请全新商标!
  17. UE4 VR 手柄 不动问题
  18. 【KingbaseES】金仓数据库V8R3定时备份工具使用详解
  19. ccf-csp 2015秋季真题题解
  20. 新加坡区块链公司架构问题,我们知多少?

热门文章

  1. Android不透明度16进制值
  2. spss变量视图转数据视图_SPSS的数据视图和变量视图
  3. css挪动背景块位置的属性,CSS 背景位置 background-position属性
  4. jq的模拟点击脚本实践---关于阿里月饼事件的一些思考
  5. ART模式下dex2oat出错导致系统无法正常启动
  6. 建立完善的员工晋升机制_员工晋升管理制度精选5篇
  7. msxml6_x86.msi和msxml6_ia64.msi和msxml6_x64.msi的选择
  8. 仅此一文,看懂二极管的所有基础知识点
  9. 关于计算机作文的结束语,语文老师:万能作文开头30篇结尾50篇,吃透次次“满分范文”...
  10. videojs创建control-bar组件,实现点击播放下一视频