题意:

给出n和s,匹配(s+1,s+2,s+3......s+n)和(1,2,3,4,5........n)让(s+x)%x==0,判断是否有解

思路:

先用程序跑一边,发现1到1e9得素数间隙小于300,那么如果n大于600时,一定会存在两个素数,直接输出no,否则就二分图匹配

比赛得时候wa无数遍,赛后看题解发现,素数还可以模自身啊,不一定非要匹配到1得位置。。。也就是说,当存在两个区间相交的时候,是允许存在两个素数的。

然后,我们需要证明,区间相交的部分一定是匹配自己最优,因为对于位置i,它可以匹配,i*1,i*2,i*3......那么显然匹配i的时候,留给其他位置更多匹配选择啊

ac代码:

#include <cstdio>
#include <iostream>
#include<cstring>
using namespace std;
#define ll long long
const int maxn=1000+10;
int f[maxn],to[maxn*maxn],nex[maxn*maxn],cnt,vis[maxn],pe[maxn],n,s;
void add(int a,int b)
{
cnt++;
to[cnt]=b;
nex[cnt]=f[a];
f[a]=cnt;
}
bool is_ok(int x)
{
for(int i=f[x]; i; i=nex[i])
{
if(vis[to[i]]==0)
{
vis[to[i]]=1;
if(pe[to[i]]==0||is_ok(pe[to[i]]))
{
pe[to[i]]=x;
return true;
}
}
}
return false;
}
int main()
{
int T;
cin>>T;
for(int cn=1; cn<=T; cn++)
{
cnt=0;
scanf("%d %d",&n,&s);
if(n>s)
{
int kk=n;
n=s;
s=kk;
}
if(n>1000)
{
printf("Case #%d: No\n",cn);
continue;
}
for(int i=1; i<maxn; i++)
f[i]=0,pe[i]=0;
memset(nex,0,sizeof(nex));
for(ll i=s+1; i<=n+s; i++)
{
for(int j=1; j<=n; j++)
{
if(i%j==0)
add(j,i-s);
}
}
int ans=0;
for(int i=1; i<=n; i++)
{
for(int j=1; j<=n; j++)vis[j]=0;
if(is_ok(i))ans++;
}
if(ans!=n)
printf("Case #%d: No\n",cn);
else
printf("Case #%d: Yes\n",cn);
}
return 0;
}

  

hdu5943素数间隙与二分匹配的更多相关文章

  1. Kingdom of Obsession---hdu5943(二分匹配)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5943 题意:给你两个数n, s 然后让你判断是否存在(s+1, s+2, s+3, ... , s+n ...

  2. D唐纳德和他的数学老师(华师网络赛)(二分匹配,最大流)

    Time limit per test: 1.0 seconds Memory limit: 256 megabytes 唐纳德是一个数学天才.有一天,他的数学老师决定为难一下他.他跟唐纳德说:「现在 ...

  3. POJ 1274 The Perfect Stall、HDU 2063 过山车(最大流做二分匹配)

    The Perfect Stall Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 24081   Accepted: 106 ...

  4. [kuangbin带你飞]专题十 匹配问题 二分匹配部分

    刚回到家 开了二分匹配专题 手握xyl模板 奋力写写写 终于写完了一群模板题 A hdu1045 对这个图进行 行列的重写 给每个位置赋予新的行列 使不能相互打到的位置 拥有不同的行与列 然后左行右列 ...

  5. BZOJ 1189 二分匹配 || 最大流

    1189: [HNOI2007]紧急疏散evacuate Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1155  Solved: 420[Submi ...

  6. poj 2060 Taxi Cab Scheme (二分匹配)

    Taxi Cab Scheme Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 5710   Accepted: 2393 D ...

  7. [ACM_图论] Sorting Slides(挑选幻灯片,二分匹配,中等)

    Description Professor Clumsey is going to give an important talk this afternoon. Unfortunately, he i ...

  8. [ACM_图论] The Perfect Stall 完美的牛栏(匈牙利算法、最大二分匹配)

    描述 农夫约翰上个星期刚刚建好了他的新牛棚,他使用了最新的挤奶技术.不幸的是,由于工程问题,每个牛栏都不一样.第一个星期,农夫约翰随便地让奶牛们进入牛栏,但是问题很快地显露出来:每头奶牛都只愿意在她们 ...

  9. nyoj 237 游戏高手的烦恼 二分匹配--最小点覆盖

    题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=237 二分匹配--最小点覆盖模板题 Tips:用邻接矩阵超时,用数组模拟邻接表WA,暂时只 ...

随机推荐

  1. Python操作字典(dict)

    一.字典定义 >>> dict={} 二.字典元素添加 >>> dict['性别']='男' >>> dict {'性别': '男'} >& ...

  2. kali系统固化到固态硬盘小记(赠送给广大折腾党的笔记)

    1.首先你需要一个移动硬盘和一个移动硬盘盒子(一根数据转换线,一般买盒子商家会赠送的) SSD硬盘要事先格式化一下格式,不然识别不出来 2.准备好Kali镜像,传送门在这里https://www.ka ...

  3. 基数排序python实现

    基数排序python实现 基数排序 基数排序(英语:Radix sort)是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较.由于整数也可以表达字符串(比如名字或 ...

  4. CentOS 7.0下安装Python3.6

    CentOS 7.0自带Python2.7 安装Python3.6步骤 1.安装依赖 yum install -y zlib-devel bzip2-devel openssl-devel ncurs ...

  5. linux 查看命令 ls-list

    1. ls 基础常用 显示指定目录下的文件列表 list ls -lthr /floder l    长的列表格式 lang 能查看到常用大部分信息 t    按时间先后排序 (sort排序) tim ...

  6. IE6浏览器无法打开QQ邮箱

    原因:未启用TLS1.0 解决方法: 打开IE浏览器,依次打开 [Internet]→[高级],在 设置 选项卡中,勾选[使用TLS1.0],然后点击[确定]保存修改,重启浏览器即可.

  7. php配置文件php.ini的详细解析(续)

    file_uploads = On                                                                                 // ...

  8. March 04th, 2018 Week 10th Sunday

    Tomorrow never comes. 我生待明日,万事成蹉跎. Most of my past failures can be chalked up to the bad habit of pr ...

  9. 【C编程基础】C程序常用函数

    基础知识 1.const const 修饰的数据类型是指常类型,常类型的变量或对象的值是不能被更新的. ; 或 ; //在定义该const变量时,通常需要对它进行初始化,因为以后就没有机会再改变它了 ...

  10. Hadoop伪分布式模式安装

    一.Hadoop介绍 Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS.HDFS有高容错性的特点,并且设计用来部署在低廉的硬件上:而且 ...