2016杭州ccpc

Kingdom of Obsession

标签: 二分图最大匹配
 51人阅读 评论(2) 收藏 举报
 分类:

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 ns.

Limits
1T100.
1n109.
0s109.

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?在CODE上查看代码片派生到我的代码片
  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.   
  12. int n,m;  
  13. int vis[MAXN],match[MAXN];  
  14. int num[MAXN];  
  15. int head[MAXN];  
  16. int cnt;  
  17. struct node  
  18. {  
  19.     int v;  
  20.     int next;  
  21. } edge[MAXN*MAXN];  
  22.   
  23. void add(int u,int v);  
  24. int dfs(int u);  
  25. int build()  
  26. {  
  27.     cnt=0;  
  28.     memset(match,-1,sizeof(match));  
  29.     int i,j,v;  
  30.     for(i=1; i<=n; ++i)head[i]=-1;  
  31.     for(i=1; i<=n; ++i)  
  32.     {  
  33.         match[i]=-1;  
  34.         for(j=1; j<=n; ++j)  
  35.         {  
  36.             v=j+m;  
  37.             if(v%i==0)add(i,j);  
  38.         }  
  39.     }  
  40.     int sum=0;  
  41.     for(i=1; i<=n; ++i)  
  42.     {  
  43.         memset(vis,0,sizeof(vis));  
  44.         if(dfs(i))sum++;  
  45.     }  
  46.     return sum;  
  47. }  
  48. void add(int u,int v)  
  49. {  
  50.     edge[cnt].v=v;  
  51.     edge[cnt].next=head[u];  
  52.     head[u]=cnt++;  
  53. }  
  54. int dfs(int u)  
  55. {  
  56.     int i;  
  57.     for(i=head[u]; i!=-1; i=edge[i].next)  
  58.     {  
  59.         int v=edge[i].v;  
  60.         if(!vis[v])  
  61.         {  
  62.             vis[v]=1;  
  63.             if(match[v]==-1||dfs(match[v]))  
  64.             {  
  65.                 match[v]=u;  
  66.                 return 1;  
  67.             }  
  68.         }  
  69.     }  
  70.     return 0;  
  71. }  
  72. int main()  
  73. {  
  74.     int t;  
  75.     scanf("%d",&t);  
  76.     for(int t1=1; t1<=t; ++t1)  
  77.     {  
  78.         scanf("%d%d",&n,&m);  
  79.         printf("Case #%d: ",t1);  
  80.         if(m<n)swap(m,n);  
  81.         if(n>300)puts("No");  
  82.         else  
  83.         {  
  84.             int ans=build();  
  85.             if(ans==n)puts("Yes");  
  86.             else puts("No");  
  87.         }  
  88.   
  89.     }  
  90.     return 0;  
  91. }  


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/509164.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入理解C语言的函数调用过程

本文主要从进程栈空间的层面复习一下C语言中函数调用的具体过程&#xff0c;以加深对一些基础知识的理解。 先看一个最简单的程序&#xff1a; 点击(此处)折叠或打开 /*test.c*/#include <stdio.h> int foo1(int m,int n,int p){ int x m n p; …

Unity3D打包后日志文件输出目录

Unity3D打包后日志文件输出目录&#xff0c;包括日志文件和崩溃时记录文件 C:\Users\Administrator\AppData\LocalLow\长沙迪迈科股份有限公司\镍矿探秘 其中"..\长沙迪迈科股份有限公司\镍矿探秘" 为unity的公司和产品设置

Unity3d LookAt参数说明

Unity3d LookAt参数说明 //// 摘要: // Rotates the transform so the forward vector points at targets current position.//// 参数: // target:// Object to point towards.//// worldUp:// Vector specifying the upward direction.public void LookAt(…

初入职场的你不应错过的一些书籍

在职场中&#xff0c;听过最接地气的一句话就是&#xff1a;在职场中要眼睛里有活儿&#xff0c;知道什么该说什么不该说&#xff0c;也不要说自己不确定的事情。今天来推荐一些职场老手建议看的书 《好好说话》 有太多人初入职场不会说话&#xff0c;而说话的能力是可以培养的…

关于 Unity WebGL 的探索

转自:https://www.cnblogs.com/yaukey/p/unity_webgl_explore_1.html 查找了 Unity 的官方资料&#xff0c;我们如果需要使用 WebGL 需要面对以下几个挑战&#xff1a; Native Plugin&#xff1a;也就是说各种原生插件&#xff08;C/C等编译的本地机器码库&#xff09;&#…

Unity脚本生命周期与执行顺序

目录 脚本生命周期 MonoBehavior生命周期图脚本执行顺序 自定义执行顺序 (文章目录) 在Unity中&#xff0c;脚本可以理解为附加在游戏对象上的用于定义游戏对象行为的指令代码。必须绑定在游戏对象上才能开始它的生命周期。游戏对象可以理解为能容纳各种组件的容器&#xff0c…

Unity3D(UE4)加载倾斜摄影数据OSGB格式

在Unity3D平台动态加载调度倾斜摄影数据&#xff0c;利用多线程动态加载瓦片数据&#xff0c;可以顺畅加载海量的瓦片数据。目前测试可流畅加载100G左右数据&#xff0c;支持加载本地数据&#xff0c;数据可不放在Unity工程内&#xff0c;也可以将数据放置在服务器上实现网络加…

Unity打包失败解决方案

更改设置即可 &#xff1a;Edit -> Graphics Emulation-> Shader Hardware Tier 1

Unity3D实现谷歌数字地球

Unity3D实现谷歌地球 在Unity3d平台实现的类似谷歌地球的功能&#xff0c;可动态加载谷歌&#xff0c;ArcGis,BingMap,天地图影像&#xff0c;也可加载国界线等矢量文件以及在线加载高程文件。 视频链接: 地球操作:https://www.bilibili.com/video/BV1mT4y1P771 地球漫游:h…

Unity罗技方向盘接入

要想在Unity中接入罗技方向盘的数据&#xff0c;首先必须安装驱动&#xff0c;并且打开安装的软件&#xff0c;否则在Unity中会一直连接不成功。状态如下&#xff1a; 然后下载相应的开发包Logitech SDK即可&#xff0c;需要替换相应的LogitechSteeringWheelEnginesWrapper.dll…

sscanf

sscanf&#xff08;&#xff09; 2010-01-28 11:53:42| 分类&#xff1a; Work|举报|字号 订阅 下载LOFTER我的照片书 |定义函数 int sscanf (const char *str,const char * format,........); 函数说明 sscanf()会将参数str的字符串根据参数format字符串来转换并格…

字典树

微博:TankyWoo基新博客:TankyWooTanky Woo的前博客 字典树&#xff08;讲解模版&#xff09; 又称单词查找树&#xff0c;Trie树&#xff0c;是一种树形结构&#xff0c;是一种哈希树的变种。典型应用是用于统计&#xff0c;排序和保存大量的字符串&#xff08;但不仅限于字符串…

Unity3D谷歌地球

Unity3D实现谷歌地球 在Unity3d平台实现的类似谷歌地球的功能&#xff0c;可动态在线加载谷歌&#xff0c;ArcGis,BingMap,天地图等影像&#xff0c;也可加载国界线等矢量文件以及在线加载高程文件。 视频链接: 地球操作:https://www.bilibili.com/video/BV1mT4y1P771 地球…

线段树的操作

登录 | 注册 MetalSeed 思绪来得快去的也快&#xff0c;偶尔会在这里停留。 目录视图摘要视图订阅 移动信息安全的漏洞和逆向原理 程序员11月书讯&#xff0c;评论得书啦 Get IT技能知识库&#xff0c;50个领域一键直达数据结构专题——线段树 标签&#xff1a; …

UE4加载osgb倾斜摄影数据

在UE4引擎中动态加载调度osgb倾斜摄影数据&#xff0c;利用多线程动态加载瓦片数据&#xff0c;可以顺畅加载海量的瓦片数据。最大可加载200G以上数量级。 Unity3D加载osgb倾斜摄影数据:Unity3d(UE4)动态加载osgb倾斜摄影数据_Answer-3的博客-CSDN博客_unity加载osgb qq:1749…

Unity/UE读取OPC UA和OPC DA数据(UE4)

Unity/UE4通过OPC UA和OPC DA协议读取PLC数据&#xff0c;通过采集服务将数据采集到数据库中&#xff0c;Unity3d和UE4再从数据库中读取数据进行展示&#xff0c;用于三维数字孪生系统接入自动化系统的硬件数据。支持WinCC,组态王&#xff0c;Kepware等组态软件的数据接入。 W…

Unity3d(UE4)动态加载osgb倾斜摄影数据

在Unity3D平台动态加载调度倾斜摄影数据&#xff0c;利用多线程动态加载瓦片数据&#xff0c;可以顺畅加载海量的瓦片数据。目前测试可流畅加载200G左右数据&#xff0c;支持加载本地数据&#xff0c;数据可不放在Unity工程内&#xff0c;也可以将数据放置在服务器上实现网络加…

RMQ算法

RMQ算法 标签&#xff1a; 算法querytable2012-08-28 20:53 14613人阅读 评论(7) 收藏 举报分类&#xff1a;nyist&#xff08;26&#xff09; 数据结构&#xff08;5&#xff09; 1. 概述 RMQ&#xff08;Range Minimum/Maximum Query&#xff09;&#xff0c;即区间最值查询…

bellman ford 算法 判断是否存在负环

Flyer 目录视图摘要视图订阅 微信小程序实战项目——点餐系统 程序员11月书讯&#xff0c;评论得书啦 Get IT技能知识库&#xff0c;50个领域一键直达关闭bellman ford 算法 2013-05-25 15:36 11148人阅读 评论(0) 收藏 举报分类&#xff1a;ACM&#xff08;11&a…

C++ vector用法

C vector用法 在c中&#xff0c;vector是一个十分有用的容器&#xff0c;下面对这个容器做一下总结。 1 基本操作 (1)头文件#include<vector>. (2)创建vector对象&#xff0c;vector<int> vec; (3)尾部插入数字&#xff1a;vec.push_back(a); (4)使用下标访问元素&…