Time Limit: 20 Sec  Memory Limit: 64 MB
Submit: 582  Solved: 250
[Submit][Status][Discuss]

Description

考虑正整数集合,现在有n组人依次来取数,假设第i组来了x人,他们每个取的数一定是x的倍数,并且是还剩下的最小的x个。
正整数中有m个数被标成了幸运数,问有哪些人取到了幸运数。

Input

第一行一个正整数m (m<=1,000,000),下面m行每行一个正整数x (x<=1,000,000),表示x是一个幸运数。
接下来一行一个正整数n (n<=1,000,000),下面n行每行一个正整数x (x<=1,000,000),表示这一组来了x个人。

Output

第一行输出一个非负整数k,表示k个人取到了幸运数,下面k行依次表示取到幸运数的人的编号,人按照来的顺序从1开始编号。

Sample Input

4
1
6
8
16
3
4
2
4

Sample Output

3
2
4
6

HINT

Hint

总共来了10个人,他们取走的数依次是4 8 12 16 2 6 20 24 28 32。

第2、4、6个人取到的是幸运数8、16、6。

(别把这题想太难,其实很水的)

Source

 
我真傻,真的。
单知道这题是个大暴力就不用花半个小时去推式子。。。
还是太菜了QWQ....
 
我们用$have[x]$表示$x$的倍数已经枚举到了多少
然后对于每个询问暴力枚举就可以了。。起点是$have[x]+x$
时间复杂度
$\dfrac {n}{1}+\dfrac {n}{2}+\ldots +\dfrac {n}{n}=n\log n$
 
 
  1. // luogu-judger-enable-o2
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<algorithm>
  5. #include<stack>
  6. #define int long long
  7. //#define getchar() (S == T && (T = (S = BB) + fread(BB, 1, 1 << 15, stdin), S == T) ? EOF : *S++)
  8. //char BB[1 << 15], *S = BB, *T = BB;
  9. using namespace std;
  10. const int MAXN=1e6+;
  11. inline int read()
  12. {
  13. char c=getchar();int x=,f=;
  14. while(c<''||c>''){if(c=='-')f=-;c=getchar();}
  15. while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
  16. return x*f;
  17. }
  18. int have[MAXN],take[MAXN],a[MAXN],limit=;
  19. int ans[MAXN],cnt=;
  20. main()
  21. {
  22. #ifdef WIN32
  23. freopen("a.in","r",stdin);
  24. #else
  25. #endif
  26. int N=read();
  27. for(int i=;i<=N;i++)
  28. {
  29. int x=read();
  30. limit=max(limit,x);
  31. a[x]=;
  32. }
  33. int M=read();
  34. int now=;
  35. while(M--)
  36. {
  37. int x=read(),t=x;
  38. for(int i=have[x]+x;i<=limit;i+=x)
  39. {
  40. if(!take[i])
  41. {
  42. now++;t--;
  43. take[i]=;
  44. if(a[i]) ans[++cnt]=now;
  45. }
  46. have[x]=i;
  47. if(t==) break;
  48. }
  49. now+=t;
  50. }
  51. printf("%lld\n",cnt);
  52. for(int i=;i<=cnt;i++)
  53. printf("%lld\n",ans[i]);
  54. return ;
  55. }

BZOJ 2793: [Poi2012]Vouchers(调和级数)的更多相关文章

  1. 【BZOJ2793】[Poi2012]Vouchers 调和级数

    [BZOJ2793][Poi2012]Vouchers Description 考虑正整数集合,现在有n组人依次来取数,假设第i组来了x人,他们每个取的数一定是x的倍数,并且是还剩下的最小的x个.正整 ...

  2. 2793 [Poi2012]Vouchers

    我们直接模拟就可以了= = now[x]表示x的倍数已经取到x * i了,于是每次读入x,直接向上枚举x个没取过的数即可. /************************************* ...

  3. [BZOJ2793][Poi2012]Vouchers

    2793: [Poi2012]Vouchers Time Limit: 20 Sec  Memory Limit: 64 MBSubmit: 316  Solved: 148[Submit][Stat ...

  4. Bzoj 2789: [Poi2012]Letters 树状数组,逆序对

    2789: [Poi2012]Letters Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 278  Solved: 185[Submit][Stat ...

  5. BZOJ 2795: [Poi2012]A Horrible Poem( hash )

    ...字符串hash. 假如长度x是一个循环节, 那么对于任意n(x | n)也是一个循环节. 设当前询问区间[l, r]长度为len = ∏piai, 最终答案ans = ∏piai' ,我们只需枚 ...

  6. BZOJ 2789: [Poi2012]Letters( BIT )

    直接求逆序对就行了...时间复杂度O(nlogn) ------------------------------------------------------------------------- ...

  7. bzoj 2795 [Poi2012]A Horrible Poem hash+数论

    2795: [Poi2012]A Horrible Poem Time Limit: 50 Sec  Memory Limit: 128 MBSubmit: 640  Solved: 322[Subm ...

  8. bzoj 2803 [Poi2012]Prefixuffix 兼字符串hash入门

    打cf的时候遇到的问题,clairs告诉我这是POI2012 的原题..原谅我菜没写过..于是拐过来写这道题并且学了下string hash.   字符串hash基于Rabin-Karp算法,并且对于 ...

  9. 【bzoj2793】[Poi2012]Vouchers 暴力

    题目描述 考虑正整数集合,现在有n组人依次来取数,假设第i组来了x人,他们每个取的数一定是x的倍数,并且是还剩下的最小的x个.正整数中有m个数被标成了幸运数,问有哪些人取到了幸运数. 输入 第一行一个 ...

随机推荐

  1. Hessian实例

    简述Hessian Hessian是一个由Caucho Technology开发的轻量级RPC框架,由于它使用二进制RPC协议,所以它更快.更简单,很适合于发送二进制数据(访问官网): 在进行基于He ...

  2. 看似简单!解读C#程序员最易犯的7大错误

    编程时犯错是必然的,即使是一个很小的错误也可能会导致昂贵的代价,聪明的人善于从错误中汲取教训,尽量不再重复犯错,在这篇文章中,我将重点介绍C#开发人员最容易犯的7个错误. 格式化字符串 在C#编程中, ...

  3. Hua Wei 机试题目一

    一.身份证号码验证 题目描述: 我国公民的身份证号码特点如下:1. 长度为18位:2. 第1-17位只能为数字:3. 第18位可以是数字或者小写英文字母x.4. 身份证号码的第7~14位表示持有人生日 ...

  4. 三种排序方法(c语言)

    #include "stdio.h" void main() {void read_data(int a[],int n); void write_data(int a[],int ...

  5. (转载) Android Studio你不知道的调试技巧

    Android Studio你不知道的调试技巧 标签: android studio 2015-12-29 16:05 2514人阅读 评论(0) 收藏 举报  分类: android(74)    ...

  6. Excel导入到DataTable ,DataTable导入到Excel

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using NPOI.SS. ...

  7. innerHTML 与 outerHTML区别

    示例代码: <div id="test"> <p>这是innerHTML</p> <p>这是innerHTML</p> ...

  8. AC Codeforces Round #499 (Div. 2) E. Border 扩展欧几里得

    没想出来QAQ....QAQ....QAQ.... 对于一般情况,我们知道 ax+by=gcd(a,b)ax+by=gcd(a,b)ax+by=gcd(a,b) 时方程是一定有解的. 如果改成 ax+ ...

  9. ES6 Symbol类型 附带:Proxy和Set

    七种数据类型 ·Symbol ·undefined ·null ·Boolean ·String ·Number ·Object let a = Symbol('this is a symbol'); ...

  10. 使用tf.ConfigProto()配置Session运行参数和GPU设备指定

    参考链接:https://blog.csdn.net/dcrmg/article/details/79091941 tf.ConfigProto()函数用在创建session的时候,用来对sessio ...