Description

给定m个素数和Q个询问。每个询问有n个人,每次操作可以任意选择其中的一个素数p(素数可以重复使用),然后去掉剩余人数 mod p个人。对于每个询问,我们想知道,至少需要多少步操作才能去掉所有人。

Input

第一行:素数个数m和询问个数Q1 <= m <= 100 0001 <= Q <= 100 000)第二行:m个素数pi (2 <= pi <= 10 000 000)下面Q行:n (1 <= n <= 10 000 000

Output

Q行答案。如果无解,输出oo

设f[n]为n的答案,则f[0]=0,f[i]单调非降,f[n]=1+f[v],其中v为某个素数pi的整数倍且v<n<v+pi,当n>=所有给定素数之积则无解

从小到大枚举n,维护pi不超过n的最大倍数,记录t[x]表示值为x的合法倍数个数,以及对每个数x用链表维护当前哪些质数的合法倍数在这个位置

最坏情况下素数倍数更新次数大约在3e7

#include<cstdio>
#include<algorithm>
char buf[],*ptr=buf-;
int n,Q,x,f[],ps[],qs[],mq=;
int t[],p=;
int e0[],enx[];
long long lcm=;
int _(){
int x=,c=*++ptr;
while(c<)c=*++ptr;
while(c>)x=x*+c-,c=*++ptr;
return x;
}
void maxs(int&a,int b){if(a<b)a=b;}
int main(){
fread(buf,,,stdin);
n=_();Q=_();
for(int i=;i<=n;++i)ps[i]=_();
for(int i=;i<=n&&lcm<=;++i)lcm*=ps[i];
for(int i=;i<Q;++i)maxs(mq,qs[i]=_());
if(lcm-<mq)mq=lcm-;
for(int i=;i<=n;++i)e0[ps[i]]=i;
t[]=n;
for(int i=;i<=mq;++i){
for(int e=e0[i],nx,w;e;e=nx){
nx=enx[e];
--t[i-ps[e]];
++t[i];
int j=i+ps[e];
if(j<=mq)enx[e]=e0[j],e0[j]=e;
}
while(!t[p])++p;
f[i]=+f[p];
}
for(int i=;i<Q;++i){
if(qs[i]<lcm)printf("%d\n",f[qs[i]]);
else puts("oo");
}
return ;
}

bzoj3136的更多相关文章

  1. bzoj3136: [Baltic2013]brunhilda

    这个题为什么会放在数据结构啊 首先因为有决策包容性,对于一个n每次必然选择一个n%p最大的p,令n减n%p 设fi表示i变成0的步数的话,同样我们可以知道f是有单调性的 假如fd能转移到fk,首先d一 ...

随机推荐

  1. 使用jQuery设置disabled属性与移除disabled属性

    Readonly只针对input和textarea有效,而disabled对于所有的表单元素都有效,下面为大家介绍下使用jQuery设置disabled属性   表单中readOnly和disable ...

  2. hexo —— 简单、快速、强大的Node.js静态博客框架

    hexo是一款基于Node.js的静态博客框架.目前在GitHub上已有1375 star 和 219 fork. 特性 风一般的速度 Hexo基于Node.js,支持多进程,几百篇文章也可以秒生成. ...

  3. 安装Python+Pywin32(version 3.3)

    1.下载python3.3,默认设置,安装. 2.完成后,在开始-程序中运行python IDLE.我在运行时出现了应用程序运行异常,原因是与其他软件内存发生冲突,如.net framework等. ...

  4. Java-->用递归方法复制目录、子目录以及文件(文件用到IO流)

    package com.dragon.java.newcopyfile; import java.io.File; import java.io.FileInputStream; import jav ...

  5. 2016 ACM/ICPC Asia Regional Qingdao Online 1001/HDU5878 打表二分

    I Count Two Three Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  6. codeforces 192b

    link: http://codeforces.com/contest/330/problem/B I think the problem is hard at first. However, whe ...

  7. Codeforces Round #134 (Div. 2)

    A. Mountain Scenery 枚举山顶位置,满足\(r_{i-1} \lt r_i - 1 \gt r_{i+1}\). 范围要开\(2N\). B. Airport 优先队列维护最值. C ...

  8. Codeforces Round #111 (Div. 2)

    Codeforces Round #111 (Div. 2) C. Find Pair 题意 给\(N(N \le 10^5)\)个数,在所有\(N^2\)对数中求第\(K(K \le N^2)\)对 ...

  9. BufferedInputStream/BufferedOutputStream复制文件

    public class Test{ public static void main(String[] args) throws IOException{ FileInputStream in = n ...

  10. ADS1110/ADS1271

    ADS1110 1.初始化 软件:设置p任意2个为GPIO口 硬件:设置p0.2,p0.3为SDA,SCL 输入.输出 ADS1110的I2C地址(1001aaa)例如ADS1110A0的地址是100 ...