HDU 5943 Kingdom of Obsession
题意:n个人编号为[s+1, s+n],有n个座位编号为[1,n],编号为 i 的人只能坐到编号为它的约数的座位,问每个人是否都有位置坐。
题解:由于质数只能坐到1或者它本身的位置上,所以如果[n+1,n+s]区间内如果有多于一个质数时肯定无解,
有解时s 一定很小因为1e9以内,最远的两个素数相差282 (打表得出),
可以证明 [s+1,n]这一段数肯定坐到自己编号的位置上要更好
所以剩下的用匈牙利匹配一下即可
简单证明一下“ [s+1,n]这一段数肯定坐到自己编号的位置上要更好”
如果有更好的位置,设x为[s+1,n]内的一个数,y为大于n的一个数
且不存在比s小的数a 是得y%a=0
但是 x%a=0 且 y%x=0
这样显然矛盾
代码:
const int maxn = ; int n, s; vector<int> G[maxn];
bool vis[maxn];
int match[maxn];
bool dfs(int u)
{
for (int i = ; i < G[u].size(); i++)
{
int v = G[u][i];
if (vis[v]) continue;
vis[v] = true;
if (match[v] == - || dfs(match[v]))
{
match[v] = u;
return true;
}
}
return false;
} int hungary(int n) //传入二分图一边的节点数
{
int matches = ;
memset(match, -, sizeof match);
for(int i = ; i <= n; ++i)
{
memset(vis, , sizeof vis);
matches += dfs(i);
}
return matches;
} void init()
{
for (int i = ; i < maxn; i++) G[i].clear();
scanf("%d%d", &n, &s);
} void solve()
{
if (s > && n > )
{
printf("No\n");
return;
}
if (n <= )
{
for (int i = ; i <= n; i++)
{
for (int j = ; j <= n; j++)
{
if ((s + i) % j == )
{
G[i].push_back(j);
}
}
}
int m = hungary(n);
if (m == n) printf("Yes\n");
else printf("No\n");
return;
}
for (int i = ; i <= s; i++)
{
for (int j = ; j <= s; j++)
{
if ((n + i) % j == )
{
G[i].push_back(j);
}
}
}
int m = hungary(s);
if (m == s) printf("Yes\n");
else printf("No\n");
} int main()
{
int T, kase = ;
scanf("%d", &T);
while (T--)
{
printf("Case #%d: ", ++kase);
init();
solve();
}
return ;
}
HDU 5943 Kingdom of Obsession的更多相关文章
- HDU 5943 Kingdom of Obsession 【二分图匹配 匈牙利算法】 (2016年中国大学生程序设计竞赛(杭州))
Kingdom of Obsession Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Oth ...
- hdu 5943 Kingdom of Obsession 二分图匹配+素数定理
Kingdom of Obsession Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Oth ...
- HDU 5938 Kingdom of Obsession(数论 + 二分图匹配)
题意: 给定S,N,把S+1,S+2,...S+N这N个数填到1,2,...,N里,要求X只能填到X的因子的位置.(即X%Y=0,那么X才能放在Y位置) 问是否能够放满. 分析:经过小队的分析得出的结 ...
- hdu 5943(素数间隔+二分图匹配)
Kingdom of Obsession Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Oth ...
- hdu 4948 Kingdom(推论)
hdu 4948 Kingdom(推论) 传送门 题意: 题目问从一个城市u到一个新的城市v的必要条件是存在 以下两种路径之一 u --> v u --> w -->v 询问任意一种 ...
- hdu5943 Kingdom of Obsession 二分图+打表找规律
题目传送门 Kingdom of Obsession Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Ja ...
- [HDOJ5943]Kingdom of Obsession(最大匹配,思路)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5943 题意:n个人编号为[s+1,s+n],有n个座位编号为[1,n],编号为i的人只能坐到编号为它的 ...
- HDU 5583 Kingdom of Black and White 水题
Kingdom of Black and White Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showpr ...
- 拓扑排序 --- hdu 4948 : Kingdom
Kingdom Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Sub ...
随机推荐
- php新手常用的函数(随时更新)
//数字保留两位小数 $n = sprintf("%1.2f", $n); //方法二 $n = number_format($n, 2, '.', ''); //UTF8转GBK ...
- iOS Build Setting证书设置
发布的用distribution debug的用development, debug是调试模式, 除非需要日志, 内部测试的时候, 才要debug模式的. release的用distribution
- iOS修改手机定位(非越狱任意位置)
利用开发者的一些调试功能,我们可以修改非越狱的苹果手机定位,模拟任意位置. 经测试,此方法仅限开发者调试使用,并不能长时间修改手机定位. 1. 首先需要了解一些坐标系的知识 iOS,原生坐标系为 WG ...
- Innodb引擎 compact模式下元组的磁盘存储结构
可变字符串长度:可变字符串长度: null vector 元组头(5个字节) 主键 trx id (6个字节) rollback pointer( 7个字节 ) 可变字符串 可变字符串 有了这个后 ...
- 【转】 TCP协议中的三次握手和四次挥手(图解)
建立TCP需要三次握手才能建立,而断开连接则需要四次握手.整个过程如下图所示: 先来看看如何建立连接的. 首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资 ...
- jquery checkbox勾选/取消勾选的诡异问题
<form> 你爱好的运动是?<input type="checkbox" id="CheckedAll" />全选/全不选<br ...
- 6/13 Sprint2 看板和燃尽图
部分页面展示
- 樱花漫地集于我心,蝶舞纷飞祈愿相随---总结 浮动:flux 浮动:flux
知识点 数据类型,运算符与表达式: 程序结构:顺序,选择,循环 问题 各种结构,单词意思 心得体会 抄程序是最笨的方法但我认为它是进步最快的方法,抄程序是积累经验的时候,而做项目才是真正把所学为所用的 ...
- 常见JAVA框架
Spring Framework [Java开源JEE框架] Spring是一个解决了许多在J2EE开发中常见的问题的强大框架. Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不 ...
- Linux设备驱动中的并发控制
1.并发是指多个执行单元同时.并行的执行.并发的执行单元对共享资源的访问很容易导致竞态. 在 Linux 内核中,主要的竞态发生于如下几种情况: ①对称多处理器(SMP)的多个 CPU ②单CPU内进 ...