Kingdom of Obsession

标签: 二分图最大匹配
2016-10-29 16:23 51人阅读 评论(2) 收藏 举报
 分类:
二分图和最大匹配(2) 

版权声明:本文为棒(xian)棒(yu)博主原创文章,转载请注明出处哦~

Kingdom of Obsession

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)

Problem Description
There is a kindom of obsession, so people in this kingdom do things very strictly.

They name themselves in integer, and there are n people with their id continuous (s+1,s+2,⋯,s+n) standing in a line in arbitrary order, be more obsessively, people with id x wants to stand at yth position which satisfy

xmody=0

Is there any way to satisfy everyone's requirement?

Input
First line contains an integer T, which indicates the number of test cases.

Every test case contains one line with two integers n, s.

Limits
1≤T≤100.
1≤n≤109.
0≤s≤109.

Output
For every test case, you should output 'Case #x: y', where x indicates the case number and counts from 1 and y is the result string.

If there is any way to satisfy everyone's requirement, y equals 'Yes', otherwise y equals 'No'.

Sample Input
2 5 14 4 11
Sample Output
Case #1: No Case #2: Yes

题意:我想来到这的都不用讲什么题意的吧。

思路:估计也都能想到利用二分图最大匹配来确定是不是能够全匹配,重点是n很大啊。

不过我们知道素数有个特性就是因数只有1和它本身。所以素数只能待在位置1或者标号为本身的位置上

1.如果m>n

如果n大于等于两个素数之间的距离,那么肯定是不可能匹配的。

如果小于直接二分图匹配一下。

2.如果m<=n

黄色部分长度为m如果m的长度大于等于两个素数的间隔那肯定是不符合题意。

如果小于那么就把m部分二分图匹配,匹配的话肯定符合题意,不匹配的话不符合题意,至于为什么不和重合部分匹配,看评论。

这两个一综合就会发现第二种如果mn互换和第一种是一样的。

至于二分图匹配:

就是n个点之间的匹配,如果两个点之间满足等式就连一条边,最后看看能不能全匹配上就可以了。

[cpp] view plaincopy print?
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <algorithm>
  4. #include <cmath>
  5. #include <queue>
  6. #include <vector>
  7. #include <cstring>
  8. #include <string>
  9. using namespace std;
  10. const int MAXN=300+7;
  11. int n,m;
  12. int vis[MAXN],match[MAXN];
  13. int num[MAXN];
  14. int head[MAXN];
  15. int cnt;
  16. struct node
  17. {
  18. int v;
  19. int next;
  20. } edge[MAXN*MAXN];
  21. void add(int u,int v);
  22. int dfs(int u);
  23. int build()
  24. {
  25. cnt=0;
  26. memset(match,-1,sizeof(match));
  27. int i,j,v;
  28. for(i=1; i<=n; ++i)head[i]=-1;
  29. for(i=1; i<=n; ++i)
  30. {
  31. match[i]=-1;
  32. for(j=1; j<=n; ++j)
  33. {
  34. v=j+m;
  35. if(v%i==0)add(i,j);
  36. }
  37. }
  38. int sum=0;
  39. for(i=1; i<=n; ++i)
  40. {
  41. memset(vis,0,sizeof(vis));
  42. if(dfs(i))sum++;
  43. }
  44. return sum;
  45. }
  46. void add(int u,int v)
  47. {
  48. edge[cnt].v=v;
  49. edge[cnt].next=head[u];
  50. head[u]=cnt++;
  51. }
  52. int dfs(int u)
  53. {
  54. int i;
  55. for(i=head[u]; i!=-1; i=edge[i].next)
  56. {
  57. int v=edge[i].v;
  58. if(!vis[v])
  59. {
  60. vis[v]=1;
  61. if(match[v]==-1||dfs(match[v]))
  62. {
  63. match[v]=u;
  64. return 1;
  65. }
  66. }
  67. }
  68. return 0;
  69. }
  70. int main()
  71. {
  72. int t;
  73. scanf("%d",&t);
  74. for(int t1=1; t1<=t; ++t1)
  75. {
  76. scanf("%d%d",&n,&m);
  77. printf("Case #%d: ",t1);
  78. if(m<n)swap(m,n);
  79. if(n>300)puts("No");
  80. else
  81. {
  82. int ans=build();
  83. if(ans==n)puts("Yes");
  84. else puts("No");
  85. }
  86. }
  87. return 0;
  88. }

2016杭州ccpc相关推荐

  1. 2016 杭州 ccpc 铜牌旅游经历

    和14学姐,15学弟参加了ccpc杭州站,然后弱菜因为实习太久,手生,打了个铜,羡慕同行的河工大银牌选手. 10.16晚上11点53的车,很拼~到点睡觉 10.17 噩耗,路上遇到施工结果晚点了三个多 ...

  2. 【云栖大会】你拿到2016杭州·云栖大会的入场券了吗?

    本文转载自 浙江日报  记者 章卉 通讯员 陈倩璐 原文链接 一年一度的杭州·云栖大会将于本周(10月13日)回归.眼下,2016杭州·云栖大会已经进入倒计时阶段.记者从组委会获悉,今年的杭州·云栖大 ...

  3. AnyRTC将携互动直播连线2016杭州·云栖大会

    核心提示:2016杭州·云栖大会即将开幕,作为互动直播新媒体提供商,AnyRTC不仅将为连开4天的大会提供全程互动直播服务,让您足不出户连线大会现场,还将在云栖展厅应邀参展,现场带来针对多个行业的互动 ...

  4. 2016 杭州·云栖大会 PDF 下载 | 那伊抹微笑

    博文作者:妳那伊抹微笑 博客地址:http://blog.csdn.net/u012185296 博文标题:2016 杭州·云栖大会 PDF 下载 | 那伊抹微笑 个性签名:世界上最遥远的距离不是天涯 ...

  5. 2016杭州云栖大会10月开幕 规模翻倍

    本文讲的是2016杭州云栖大会10月开幕 规模翻倍[IT168 云计算]去年盛况空前的杭州·云栖大会将于今年10月13日回归,这次大会规模将比去年翻倍,从原本2天的议程增加至4天,从10月13日持续到 ...

  6. 2016年CCPC/ICPC比赛总结

    2016:我大一升入大二. 队友:GLY,WZK. 队名:开心就好(MyHappinessIsAll) 菜鸡战绩:5月省赛二等,9月东北四省赛二等,9月CCPC长春打铁,10月ICPC沈阳压线铜牌. ...

  7. 【SDCC 2016·杭州站】9月22日大数据实战专场精彩呈现

    http://geek.csdn.net/news/detail/103266 [SDCC 现场报道]2016年9月22日-23日,由CSDN重磅打造的大数据核心技术与实战峰会.互联网应用架构实战峰会 ...

  8. 限时免费!2016杭州云栖大会抢票指南

    2019独角兽企业重金招聘Python工程师标准>>> 一年一度的杭州云栖大会目前已开放报名,根据云栖官网显示的内容,2016年杭州云栖的主题是"互联网 创新 创业&quo ...

  9. 2016杭州网易Java开发工程师内推面试

    杭州网易Java开发工程师(杭州研究院),2016年8月17号一天进行完成,笔试通过,杭州的职位招的人多,笔试相比北京来说算是好进的了.身边的同学投c++的基本都挂了,Java的都过了,可能c++大神 ...

最新文章

  1. path,classpath
  2. 从今天开始,你就可以通过云“体验”量子计算了!
  3. python+mysql:实现一千万条数据插入数据库
  4. cadence原理图封装pin名称重复_Cadence原理图库文件引脚名重复处理方法介绍
  5. QT绘制嵌套的圆饼状图
  6. SQL Server pivot行列转换案例分析
  7. 使用Nginx反向代理和proxy_cache缓存搭建CDN服务器加快Web访问速度
  8. Unity 2017 Game Optimization 读书笔记(1)Scripting Strategies Part 1
  9. SCREEN屏幕编程时候必须保证SCREN中词典的字段格式必须和数据表中字段的类型长度一致!...
  10. 第三篇:Spring Boot整合Servlet
  11. IBatisNet 升级到 .Net Framework 4.0 时发现 IBatisNet 一小BUG
  12. Android ADT Templates Android常用模版
  13. 启用Exchange邮箱审核后使用命令Search-MailboxAuditLog返回结果为空
  14. 自定义LinkedList实现
  15. 荣耀magicbook15C语言,荣耀MagicBook 15 2021版评测:轻薄机身+强悍性能 专为高效率办公而生...
  16. 强制客户端更新Silverlight XAP文件方法汇总
  17. 测试人员必备:常用自动化测试工具
  18. CSDN怎么获得积分和C币的方法
  19. 千万级数据查询中CK、ES、RediSearch方案的优化
  20. android 虚拟技术打开,雷电安卓模拟器VT虚拟化打开方法教程

热门文章

  1. java线程的优点_Java使用多线程的优势
  2. 拆分列成多行_把订单按货品拆分成多行(上)
  3. python执行oracle命令_如何使用cx\U Oracle运行非查询sql命令?
  4. Linux中实现远程登录Xshell和Xftp
  5. c++矩阵类_面向对象有限元编程|单元类
  6. update关联一个视图的时候特别慢_实现一个简单的Vue.js
  7. 单片机音频谱曲软件_【自己写的小软件】CLY单片机音乐代码超级生成器
  8. 【LeetCode笔记】169. 多数元素(Java、摩尔投票法、哈希表)
  9. lrtemplate如何导入pr_PR模板使用套路讲解 视频剪辑教程
  10. python压缩文件夹为zip_python打包压缩文件夹zip+组装文件夹