BZOJ1423 : Optimus Prime

设$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;
}

  

时间: 2024-07-29 00:05:35

BZOJ1423 : Optimus Prime的相关文章

iOS-C_Day14___联合枚举

2015.2.5 //union //联合体中的成员变量共用的是同一块内存 //union Unit //{ //    char ch[9]; //    short a; //    int amount; //    float price; //    long number; //}; // // ////struct Goods{ ////    char name[20]; ////    float price; ////    union Unit ////    { ////

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

这篇内容我们继续上一篇的例子接着做下去,为其再添加3个table view的例子,有了之前的基础,学习下面的例子会变得很简单,很多东西都是举一反三,稍稍有些不同的内容,好了,闲话少说,开始这次的学习. 如果没有上一篇的代码,可以从这里下载Nav_1 1)第三个subtableview:Controls on Table Rows这个例子,我们将为每个table view的每一行添加一个按钮,这个按钮将放在accessory icon的位置(之前我们使用过accessoryType,其实这也是一个

【最短路】ACdream 1198 - Transformers&#39; Mission

Problem Description A group of transformers whose leader is Optimus Prime(擎天柱) were assigned a mission: to destroy all Decepticon's(霸天虎) bases. The bases are connected by roads. They must visit each base and place a bomb there. They start their missi

擎天柱经典语录

引用:http://www.tfmatrix.com/2010/09/18/10-optimus-prime-quotes-useful-in-the-workplace/ http://quotableoptimusprime.blogspot.com/p/quotes-about-op.html Optimus says a lot of cool things. Most of it is very inspirational and motivates you to achieve be

C语言经典编程之字符串

1.按特定顺序输出压缩 输入一段字符串,把相同的字符按出现顺序,归在一起,并压缩. 例如: 输入:SamSameCome 输出: SSaammmeeCo S2a2m3e2C1o1 [难度系数] ▲ ▲ ▲ ▲ [分析] [代码] #include <stdio.h> #include <string.h> int main(void) { char ch[100]; char str[100]; char s; int i = 0; int j = 0; int count = 1

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

除了高超的武艺,每位黑忍者还需要装备最好的武器.在软件开发的世界里,好的工具能让我们的生活变得更轻松,在更短的时间里写出更棒的代码. 时光回到2008年,那时安卓还很年轻.只有几个相关的博客和谷歌官方的几个应用开发教程,没有函数库也没有代码生成器,甚至连成熟的设计模式也没有(除了OOP和一些Java实践).今非昔比,我们已经有了一个成熟的OS.很棒的开发工具.稳定的Eclipse插件和其他IDE,数不清的开发书籍和相关的技术博客. 这里,我想分享自己在开发安卓应用时用到的工具和一些技巧,希望可以

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

新年伊始,找到Android进阶干货若干,2015拜读. 1.Android应用UI设计模式 目前,谷歌Android操作系统在移动市场中风头正劲,并且未来发展势不可挡.<Android应用UI设计模式>面向Android 4.0+操作系统,是市面上第一本深入解析Android界面设计的佳作.<Android应用UI设计模式>从适用于移动设备和平板的通用模式以及 Android UI设计指南出发,深入探讨了58种重要的Android交互设计模式及其应用.每种模式登场之前,先用基本知

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

这两周需要写一个页面来请求另一个服务中的接口,服务器采用了超轻量级的undertow,模板引擎采用的是Thymeleaf,在寻找页面资源位置这个地方难住了我.下面分享一下,这方面的代码. SpringWebConfig方面: public class SpringWebConfig extends WebMvcConfigurerAdapter { private static boolean initialized = false; @Bean public static PropertySo

Iterator、Iteratable与ListIterator

Iteratable: public interface Iterable<T> { Iterator<T> iterator(); default void forEach(Consumer<? super T> action) { Objects.requireNonNull(action); for (T t : this) { action.accept(t); } } default Spliterator<T> spliterator() { r