题意: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的更多相关文章

  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. HDU 5938 Kingdom of Obsession(数论 + 二分图匹配)

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

  4. hdu 5943(素数间隔+二分图匹配)

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

  5. hdu 4948 Kingdom(推论)

    hdu 4948 Kingdom(推论) 传送门 题意: 题目问从一个城市u到一个新的城市v的必要条件是存在 以下两种路径之一 u --> v u --> w -->v 询问任意一种 ...

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

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

  7. [HDOJ5943]Kingdom of Obsession(最大匹配,思路)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5943 题意:n个人编号为[s+1,s+n],有n个座位编号为[1,n],编号为i的人只能坐到编号为它的 ...

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

  9. 拓扑排序 --- hdu 4948 : Kingdom

    Kingdom Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Sub ...

随机推荐

  1. CSS 3 3D转换

    绘制3D环境 父元素设置了 preserve-3d  子元素就可以以父元素作为平面进行3d转换 transform-style: preserve-3d; 设置视点 :表示透视效果  值越小 透视效果 ...

  2. AlwaysOn数据同步问题探究

    随着AlwaysOn技术的流行,关于AlwayOn的问题也越来越多,某企业搭建有三副本的AlwaysOn一套,现想修改主节点上某张表的某个数据,看看会出现什么后果,如果结果正常,就同步到其他节点上:如 ...

  3. 鼠标滑过弹出jquery在线客服

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. Unity ShaderLab学习总结

    http://www.jianshu.com/p/7b9498e58659 Unity ShaderLab学习总结 Why Bothers? 为什么已经有ShaderForge这种可视化Shader编 ...

  5. mysqlbinlog flashback 5.6完全使用手册与原理

    版本更新 2016/3/7 首次发布      2016/3/9  修复update无效问题      2016/4/8  修复带有秒级别以下的日期数据bug 下载地址 http://pan.baid ...

  6. progresql - 常用的管理命令

    1.查看当前数据库实例的版本 Select version(); 2.查看数据库的启动时间 Select pg_postmaster_start_time(); 3.查看最后load配置文件的时间 s ...

  7. git: No refs in common and none specified; doing no

    用gitolite新建项目,clone后首次push,可能会出现:     $ git push No refs in common and none specified; doing nothing ...

  8. iOS基础篇(十三)——UITableView(一)重用机制

    UITableView是app开发中常用到的控件,功能很强大,常用于数据的显示.在学习UITableView使用之前,我们先简单了解一下: 1.UITableView的重用机制 UITableView ...

  9. java selenium 题目一 如果定位动态变化的id

    题目 HTML 代码如下 <a id="username-1190" class="class1">用户名</a> 因为id是由java ...

  10. MATLAB 例子研究 Motion-Based Multiple Object Tracking

    这个例子是用来识别视频中多个物体运动的.我要研究的是:搞清楚识别的步骤和相应的算法,识别出物体运动的轨迹. 详细参见官方帮助文档,总结如下: 移动物体的识别算法:a background subtra ...