博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU5943 Kingdom of Obsession(思路题+二分匹配)
阅读量:6485 次
发布时间:2019-06-23

本文共 1440 字,大约阅读时间需要 4 分钟。

题意:

给你两个数n,s(1e9),问你能否使得s+1--s+n和1--n全部匹配

每个数只能匹配他的因子

思路:

要匹配的这一段数中非重合部分最多有1个素数,也就是说n和s不能同时很大

我打了1e9的素数间隔表,发现最大间距才280多。。

然后索性直接当n和s都大于500的时候就输出no就可以了

符合条件的数非重合部分最多500个,二分匹配一下

/* ***********************************************Author        :devil************************************************ */#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define LL long long#define rep(i,a,b) for(int i=a;i<=b;i++)#define dep(i,a,b) for(int i=a;i>=b;i--)#define ou(a) printf("%d\n",a)#define pb push_back#define mkp make_pairtemplate
inline void rd(T &x){ char c=getchar(); x=0; while(!isdigit(c))c=getchar(); while(isdigit(c)) { x=x*10+c-'0'; c=getchar(); }}#define IN freopen("in.txt","r",stdin);#define OUT freopen("out.txt","w",stdout);using namespace std;const int inf=0x3f3f3f3f;const int mod=1e9+7;const int N=5e4+10;LL n,s;vector
eg[N];int linker[N];bool vis[N];bool dfs(int u){ for(int i=0; i
500&&s>500) { printf("No\n"); continue; } if(n>s) swap(n,s); for(int i=1; i<=n; i++) eg[i].clear(); for(int i=1; i<=n; i++) add(i); int ans=0; memset(linker,-1,sizeof(linker)); for(int i=1; i<=n; i++) { memset(vis,0,sizeof(vis)); ans+=dfs(i); } if(ans==n) printf("Yes\n"); else printf("No\n"); } return 0;}

 

转载于:https://www.cnblogs.com/d-e-v-i-l/p/6012853.html

你可能感兴趣的文章
Material Design之AppBarLayout
查看>>
让mysql不能为空的字段为空时也能插入
查看>>
一服多开
查看>>
从CVS迁移到SVN
查看>>
总部与前线
查看>>
微软推出Windows 10专业教育版:Cortana没了
查看>>
TensorFlow教程之API DOC 6.1.2Class tensorflow::EnvWrapper
查看>>
多目标跟踪突破:上交大&中兴 MOT Challenge 测评获第一
查看>>
控制ASP.NET Web API 调用频率
查看>>
系统诊断小技巧(7):利用Iptables进行排查和诊断的简易方案
查看>>
IPv6的渗透率比人们想象的要快速?
查看>>
针对Windows零日漏洞,微软是不是太过“无作为”了?
查看>>
推特解散商业团队 终止开发“Buy”按钮
查看>>
英特尔SSD:17年将专注于3D NAND和PCIe
查看>>
python (3):wxPython打包app,报错
查看>>
给网站更换服务器需要注意什么?
查看>>
成长型企业ERP系统实施的八大准则
查看>>
中国大部分能源规划不是真正的产业政策
查看>>
银联云计算平台 金融科技创新典范
查看>>
Apache Hama 现支持 Hadoop YARN
查看>>