设$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]$的众数,极有可能就是精确解。

  1. #include<cstdio>
  2. const int N=3000010,M=N/10,E=1010;
  3. int T,n,t,i,j,tot,p[M],f[M],c[E],ans[E];bool v[N];
  4. inline int cal(int n){
  5. if(~ans[n])return ans[n];
  6. int i,j;
  7. for(i=0;i<=n;i++)c[i]=0;
  8. for(i=j=0;i<=tot;i++){
  9. if(p[i]<=n)f[i]=p[i];
  10. else{
  11. while(j+1<i&&p[i]-p[j+1]>n)j++;
  12. f[i]=f[j];
  13. }
  14. if(i<tot&&p[i]+n<p[i+1])return ans[n]=f[i];
  15. if(i>tot/10*9)c[f[i]]++;
  16. }
  17. for(i=j=0;i<=n;i++)if(c[i]>c[j])j=i;
  18. for(i=0;i<=n;i++)if(i!=j&&c[i]*2>c[j])return ans[n]=0;
  19. return ans[n]=j;
  20. }
  21. int main(){
  22. for(v[1]=1,i=2;i<N;i++){
  23. if(!v[i])p[++tot]=i;
  24. for(j=1;j<=tot&&i*p[j]<N;j++){
  25. v[i*p[j]]=1;
  26. if(i%p[j]==0)break;
  27. }
  28. }
  29. for(i=0;i<E;i++)ans[i]=-1;
  30. scanf("%d",&T);
  31. while(T--){
  32. scanf("%d",&n);
  33. if(t=cal(n))printf("A %d\n",t);else puts("B");
  34. }
  35. return 0;
  36. }

  

BZOJ1423 : Optimus Prime的更多相关文章

  1. 安卓开发经验分享:资源、UI、函数库、测试、构建一个都不能少(转)

    除了高超的武艺,每位黑忍者还需要装备最好的武器.在软件开发的世界里,好的工具能让我们的生活变得更轻松,在更短的时间里写出更棒的代码. 时光回到2008年,那时安卓还很年轻.只有几个相关的博客和谷歌官方 ...

  2. 【Mood-12】Android开发相关书籍推荐

    新年伊始,找到Android进阶干货若干,2015拜读. 1.Android应用UI设计模式 目前,谷歌Android操作系统在移动市场中风头正劲,并且未来发展势不可挡.<Android应用UI ...

  3. 从零开始学ios开发(十五):Navigation Controllers and Table Views(中)

    这篇内容我们继续上一篇的例子接着做下去,为其再添加3个table view的例子,有了之前的基础,学习下面的例子会变得很简单,很多东西都是举一反三,稍稍有些不同的内容,好了,闲话少说,开始这次的学习. ...

  4. 【最短路】ACdream 1198 - Transformers' Mission

    Problem Description A group of transformers whose leader is Optimus Prime(擎天柱) were assigned a missi ...

  5. Dubbo 源码分析 - SPI 机制

    1.简介 SPI 全称为 Service Provider Interface,是 Java 提供的一种服务发现机制.SPI 的本质是将接口实现类的全限定名配置在文件中,并由服务加载器读取配置文件,加 ...

  6. Iterator、Iteratable与ListIterator

    Iteratable: public interface Iterable<T> { Iterator<T> iterator(); default void forEach( ...

  7. dubbo SPI设计

    SPI 全称为 Service Provider Interface,是一种服务发现机制.SPI 的本质是将接口实现类的全限定名配置在文件中,并由服务加载器读取配置文件,加载实现类.这样可以在运行时, ...

  8. UndertowServer+SpringMVC+Thymeleaf模板引擎构建轻量级的web项目

    这两周需要写一个页面来请求另一个服务中的接口,服务器采用了超轻量级的undertow,模板引擎采用的是Thymeleaf,在寻找页面资源位置这个地方难住了我.下面分享一下,这方面的代码. Spring ...

  9. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

随机推荐

  1. 读书笔记——《You Don't Know JS》

    第一部:<You don't know JS: this & Object prototype> 第三章 Object 对象常量 var myObject = {}; Object ...

  2. 集腋成裘-01-html -html基础

    1 标签 1.1 单标签 注释标签 <!-- 注释标签 --> 换行标签 <br/> 水平线 <hr/> <img src="图片来源" ...

  3. fastjson如何判断JSONObject和JSONArray

    1.fastjson如何判断JSONObject和JSONArray,百度一下,教程还真不少,但是是阿里的fastjson的我是没有找到合适的方法.这里用一个还算可以的方法,算是实现了这个效果. 网上 ...

  4. 【Arduino】Arduino接收字符串

    [Arduino]Arduino接收字符串 相关文章 [Arduino]开发入门[十]Arduino蓝牙模块与Android实现通信 在[Arduino]开发入门[十]Arduino蓝牙模块与Andr ...

  5. 【原创】python 豆瓣采集

    新手今天刚学python~~~ 有点凌乱~勉强看吧 只能算是给新手看看,见谅 简单版本的 豆瓣采集美图~~~~~~ 美女天天有 有木有~~~ python 3.4 sqlite3 BeautifulS ...

  6. ftp弱密码案例

  7. 数位dp 模板

    不能有49 #include<bits/stdc++.h> using namespace std; //input by bxd #define rep(i,a,b) for(int i ...

  8. Excel表列名称(给定一个正整数,返回它在 Excel 表中相对应的列名称。)

    例如, 1 -> A 2 -> B 3 -> C ... 26 -> Z 27 -> AA 28 -> AB ... 示例 1: 输入: 1 输出: "A ...

  9. Enrolment注册插件

    自moodle2.0注册插件必须继承 lib/enrollib.php的  enrol_plugin 抽象类:这个基类包含所有标准方法和开发人员文档 课程注册信息存储在enrol和user_enrol ...

  10. CentOS7 中文man(cman)配置方法

    1. 下载中文man包 http://pkgs.fedoraproject.org/repo/pkgs/man-pages-zh-CN/manpages-zh-1.5.1.tar.gz/13275fd ...