题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5943

题意:n个人编号为[s+1,s+n],有n个座位编号为[1,n],编号为i的人只能坐到编号为它的约数的座位,问每个人是否都有位置坐。

首先,可以肯定的是素数编号的人只能做到自己的编号上或者是1上,那么假如[s+1,s+n]区间内出现了两个以上的素数,那么整个情况是无解的。

其次,假如s<n的话,可以把[s+1,s+n]直接放到[s+1,s+n]上,剩下的将会是s个人和s个座位,人的编号是[n+1,n+s],座位的编号是[s+1,s+n],所以直接给s和n交换一下就行。

我断定1000个数之间一定会出现至少两个素数,因此当n>1000的时候就是无解了。

接下来就是O(n^2),按照能否整除建图了,跑出最大匹配,看看跟n是不是相等就行了。

 #include <bits/stdc++.h>
using namespace std; const int maxn = ;
int nu, nv;
int G[maxn][maxn];
int linker[maxn];
bool vis[maxn];
int s, n; bool dfs(int u) {
for(int v = ; v <= nv; v++) {
if(G[u][v] && !vis[v]) {
vis[v] = ;
if(linker[v] == - || dfs(linker[v])) {
linker[v] = u;
return ;
}
}
}
return ;
} int hungary() {
int ret = ;
memset(linker, -, sizeof(linker));
for(int u = ; u <= nu; u++) {
memset(vis, , sizeof(vis));
if(dfs(u)) ret++;
}
return ret;
} int main() {
// freopen("in", "r", stdin);
int T, _ = ;
scanf("%d", &T);
while(T--) {
scanf("%d %d", &s, &n);
memset(G, , sizeof(G));
printf("Case #%d: ", _++);
if(s < n) swap(s, n);
if(n > ) {
puts("No");
continue;
}
nu = * n, nv = n;
for(int i = ; i <= n; i++) {
for(int j = ; j <= n; j++) {
if((s + i) % j == ) G[i+n][j] = ;
}
}
if(hungary() == n) puts("Yes");
else puts("No");
}
return ;
}

[HDOJ5943]Kingdom of Obsession(最大匹配,思路)的更多相关文章

  1. HDU 5943 Kingdom of Obsession 【二分图匹配 匈牙利算法】 (2016年中国大学生程序设计竞赛(杭州))

    Kingdom of Obsession Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Oth ...

  2. hdu 5943 Kingdom of Obsession 二分图匹配+素数定理

    Kingdom of Obsession Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Oth ...

  3. hdu5943 Kingdom of Obsession 二分图+打表找规律

    题目传送门 Kingdom of Obsession Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Ja ...

  4. 【HDOJ5943】Kingdom of Obsession(数论)

    题意:给定n个人,n个座位,人的编号是[1,n],座位的编号是[s+1,s+n],编号为i的人能坐在编号为j的座位上的条件是j%i=0 问是否存在一组方案使得座位和人一一对应 n,s<=1e9 ...

  5. HDU 5943 Kingdom of Obsession

    题意:n个人编号为[s+1, s+n],有n个座位编号为[1,n],编号为 i 的人只能坐到编号为它的约数的座位,问每个人是否都有位置坐. 题解:由于质数只能坐到1或者它本身的位置上,所以如果[n+1 ...

  6. 「国庆训练」Kingdom of Obsession(HDU-5943)

    题意 给定\(s,n\),把\(s+1,s+2,...,s+n\)这\(n\)个数填到\(1,2,...,n\)里,要求\(x\)只能填到\(x\)的因子的位置(即题目中\(x\%y=0\)那么x才能 ...

  7. HDU 5938 Kingdom of Obsession(数论 + 二分图匹配)

    题意: 给定S,N,把S+1,S+2,...S+N这N个数填到1,2,...,N里,要求X只能填到X的因子的位置.(即X%Y=0,那么X才能放在Y位置) 问是否能够放满. 分析:经过小队的分析得出的结 ...

  8. HDU5943 Kingdom of Obsession 题解

    题意 有 \(n\) 个数 \(s+1\ldots s+n\),求是否能将这 \(n\) 个数放到 \(1\ldots n\) 上,且当令原数为 \(x\),放到 \(y\) 位置时有 \(x \mo ...

  9. bzoj 1854: [Scoi2010]游戏 (并查集||二分图最大匹配)

    链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1854 写法1: 二分图最大匹配 思路:  将武器的属性对武器编号建边,因为只有10000种 ...

随机推荐

  1. 关于学习keynote

    下午在学习如何用keynote写出高大上的文档,看到公司内的一个妹纸洋洋洒洒的写了好多篇文章,顿时觉得自己的知识面狭窄,文科女和理科女的差别,从我嘴里半天吐不出一个富有诗情画意的词句来,那么还是脚踏实 ...

  2. linux设备驱动归纳总结(八):4.总线热插拔【转】

    本文转载自:http://blog.chinaunix.net/uid-25014876-id-110774.html linux设备驱动归纳总结(八):4.总线热插拔 xxxxxxxxxxxxxxx ...

  3. Asp.Net Mvc视图引擎Razor介绍

    1.Razor介绍 1)ASP.NET MVC3 带来了一种新的名为Razor 的视图引擎,提供了下列优点: Razor 的语法简单且清晰,只需要最小化的输入 Razor 容易学习,语法类似于 C#  ...

  4. ubunu下用命令设置壁纸

    ubunu下用命令设置壁纸: gsettings set org.gnome.desktop.background picture-uri “file:[fileName]” eg:gsettings ...

  5. PBOC APDU命令解析【转】

    转自:http://blog.csdn.net/zuokong/article/details/49335257 版权声明:本文为博主原创文章,未经博主允许不得转载. 应用层发出的命令报文和卡片回送到 ...

  6. 修改Linux时间一般涉及到3个命令: date, clock, hwclock

    原贴:http://203.208.37.104/search?q=cache:p1vAAHvs9ikJ:www.goldthe.com /blog/%3Faction%3Dshowlog%26gid ...

  7. HDU 2665 && POJ 2104(主席树)

    http://poj.org/problem?id=2104 对权值进行建树(这个时候树的叶子是数组b的有序数列),然后二分查找原数列中每个数在有序数列中的位置(即第几小),对每一个前缀[1,i]建一 ...

  8. Linux用户组与用户组进阶命令

    1.用户锁定 : passwd -l user1 2.解除用户锁定:passwd -u user1 3.用户无密码登记:passwd -d user1 4.添加到附属用户组:gpasswd -a us ...

  9. java面试每日一题10

    题目:利用递归方法求5! public class Recursion { public static void main(String args[]) throws NumberFormatExce ...

  10. PRINCE2七大原则(1)

    PRINCE2七大原则(1) 我们先来回顾一下,PRINCE2七大原则分别是持续的业务验证,经验学习,角色与责任,按阶段管理,例外管理,关注产品,剪裁. 第二个原则:吸取经验教训. PRINCE2要求 ...