设$f[x]$表示为了保证自己可以取到质数$x$,第一步在$[0,n]$中可以选的数是多少。

这个数是唯一的,因为如果存在两个$f[x]=a,b(a<b)$,那么如果先手取了$a$,后手就能取$b$来让先手取不到$x$,矛盾。

如果$x$与下一个质数之间的差值大于$n$,那么$f[x]$就是结果,当$f[x]=0$时先手必败。

对于不超过$n$的$x$,$f[x]=x$。

对于大于$n$的$x,f[x]=f[y]$,其中$y$是$x$前面最近的与它差值大于$n$的质数,可以双指针得到。

如果没有找到终止态,取一定范围内的所有大质数的$f[x]$的众数,极有可能就是精确解。

#include<cstdio>
const int N=3000010,M=N/10,E=1010;
int T,n,t,i,j,tot,p[M],f[M],c[E],ans[E];bool v[N];
inline int cal(int n){
if(~ans[n])return ans[n];
int i,j;
for(i=0;i<=n;i++)c[i]=0;
for(i=j=0;i<=tot;i++){
if(p[i]<=n)f[i]=p[i];
else{
while(j+1<i&&p[i]-p[j+1]>n)j++;
f[i]=f[j];
}
if(i<tot&&p[i]+n<p[i+1])return ans[n]=f[i];
if(i>tot/10*9)c[f[i]]++;
}
for(i=j=0;i<=n;i++)if(c[i]>c[j])j=i;
for(i=0;i<=n;i++)if(i!=j&&c[i]*2>c[j])return ans[n]=0;
return ans[n]=j;
}
int main(){
for(v[1]=1,i=2;i<N;i++){
if(!v[i])p[++tot]=i;
for(j=1;j<=tot&&i*p[j]<N;j++){
v[i*p[j]]=1;
if(i%p[j]==0)break;
}
}
for(i=0;i<E;i++)ans[i]=-1;
scanf("%d",&T);
while(T--){
scanf("%d",&n);
if(t=cal(n))printf("A %d\n",t);else puts("B");
}
return 0;
}

  

最新文章

  1. 大话设计模式之&lt;一&gt;计算器的深思
  2. jQuery中,$(&#39;#main&#39;) 与 document.getElementById(&#39;main&#39;)是什么样的关系-转
  3. javase基础复习攻略《三》
  4. react路由案例(非常适合入门)
  5. javascript 返回数组中不重复的元素
  6. WC约束示使用
  7. Android Material Design-TabLayout的使用
  8. php 相对路径中 及 绝对路径中 的一些问题
  9. VirtualBox虚拟机中启用usb3.0却无法显示u盘的解决方法
  10. android调试系列--使用ida pro调试so
  11. 解决java.lang.IllegalStateException: BeanFactory not initialized or already closed - call &#39;refresh&#39; before accessing beans via the ApplicationContext这个问题
  12. [Python] Python 学习 - 可视化数据操作(一)
  13. SpringBoot启动源码探究---listeners.starting()
  14. Nodejs sublime text 3安装与配置
  15. Hibernate 5 入门指南-基于JPA
  16. Nginx技术研究系列7-Azure环境中Nginx高可用性和部署架构设计
  17. 汇编语言--微机CPU的指令系统(五)(数据传送指令)
  18. 《Linux内核设计与实现》第三章读书笔记
  19. js中获取时间new date()的用法和获取时间戳
  20. XMind8 安装

热门文章

  1. K8s-Pod
  2. linux:安装Memcache并使用
  3. Just oj 2018 C语言程序设计竞赛(高级组)D: 四边形面积
  4. STL容器之优先队列
  5. 18/03/18 04:53:44 WARN TaskSchedulerImpl: Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
  6. 利用sqlmap注入测试
  7. 移动端开发demo—移动端web相册(一)
  8. 【LGR-052】洛谷9月月赛II(加赛)
  9. 【CF446D】DZY Loves Games
  10. 【技巧汇总】eclipse中如何跳转到指定行