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

鸣谢Oimaster

我真傻,真的。
单知道这题是个大暴力就不用花半个小时去推式子。。。
还是太菜了QWQ....
我们用$have[x]$表示$x$的倍数已经枚举到了多少
然后对于每个询问暴力枚举就可以了。。起点是$have[x]+x$
时间复杂度
$\dfrac {n}{1}+\dfrac {n}{2}+\ldots +\dfrac {n}{n}=n\log n$
// luogu-judger-enable-o2
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<stack>
#define int long long
//#define getchar() (S == T && (T = (S = BB) + fread(BB, 1, 1 << 15, stdin), S == T) ? EOF : *S++)
//char BB[1 << 15], *S = BB, *T = BB;
using namespace std;
const int MAXN=1e6+10;
inline int read()
{char c=getchar();int x=0,f=1;while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}return x*f;
}
int have[MAXN],take[MAXN],a[MAXN],limit=0;
int ans[MAXN],cnt=0;
main()
{#ifdef WIN32freopen("a.in","r",stdin);#else#endifint N=read();for(int i=1;i<=N;i++) {int x=read();limit=max(limit,x);a[x]=1;}int M=read();int now=0;while(M--){int x=read(),t=x;for(int i=have[x]+x;i<=limit;i+=x){if(!take[i]){now++;t--;take[i]=1;if(a[i]) ans[++cnt]=now;}have[x]=i;if(t==0) break;}now+=t;}printf("%lld\n",cnt);for(int i=1;i<=cnt;i++)printf("%lld\n",ans[i]);return 0;
}

转载于:https://www.cnblogs.com/zwfymqz/p/8481187.html

BZOJ 2793: [Poi2012]Vouchers(调和级数)相关推荐

  1. 2793 [Poi2012]Vouchers

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

  2. BZOJ 2788[Poi2012]Festival

    题面: 2788: [Poi2012]Festival Time Limit: 30 Sec  Memory Limit: 64 MB Submit: 418  Solved: 190 [Submit ...

  3. bzoj 2803: [Poi2012]Prefixuffix(双Hash)

    2803: [Poi2012]Prefixuffix Time Limit: 10 Sec  Memory Limit: 64 MB Submit: 413  Solved: 167 [Submit] ...

  4. bzoj 2803 [POI2012]prefixuffix hsh+性质

    题目大意 bzoj 2803 对于两个串S1.S2,如果能够将S1的一个后缀移动到开头后变成S2,就称S1和S2循环相同.例如串ababba和串abbaab是循环相同的. 给出一个长度为n的串S,求满 ...

  5. Loj一本通刷题记录

    夏令营回来后就不知道怎么回事,状态一直不好== 为了让自己不要太颓废,开个坑在noip前把一本通的好题都刷一遍. 如果想要noip拿省一的话,就要开始好好努力了.加油! 为了节省时间,一些比较简单的东 ...

  6. 一句话题解(20170801~20170125)

    8.1 bzoj 4720 noip2016 换教室 floyd预处理+期望(薛定谔的猫) bzoj 4318 OSU! 三次函数期望值 从一次.二次推得 8.2 bzoj 1076 状压+期望DP ...

  7. BZOJ 1607 [Usaco2008 Dec]Patting Heads 轻拍牛头:统计 + 筛法【调和级数】

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1607 题意: 给你n个数,问你除a[i]之外,有多少个数是a[i]的约数. 题解: ans ...

  8. UOJ #219 BZOJ 4650 luogu P1117 [NOI2016]优秀的拆分 (后缀数组、ST表)

    UOJ #219 BZOJ 4650 luogu P1117 [NOI2016]优秀的拆分 (后缀数组.ST表) 连NOI Day1T1都不会做...看了题解都写不出来还要抄Claris的代码.. 题 ...

  9. bzoj 2081 [Poi2010]Beads

    2081: [Poi2010]Beads Time Limit: 10 Sec Memory Limit: 259 MB Submit: 687 Solved: 246 [Submit][Status ...

最新文章

  1. 消除左递归实验代码_「leetcode」108. 构造二叉搜索树【递归】【迭代】详解!
  2. 用hundred造句子_6分以上的人句子长啥样?
  3. python中utf8占几个字节_为什么utf8占用3个字节
  4. Response.ContentType所有类型例举
  5. mysql主节点1593从节点正常_mysqlmha高可用架构的安装_MySQL
  6. python中ls是什么_使用Python代码实现Linux中的ls遍历目录命令的实例代码
  7. MySQL如何删除有外键约束的数据
  8. python素描效果_python实现图片素描效果
  9. 如何融合深度学习特征向量?
  10. 超 8 成软件存已知高危开源漏洞,奇安信发布《2021 中国软件供应链安全分析报告》
  11. cvCloneImage()内存泄漏解决方法, cvCloneImage()和cvCopy()的区别
  12. Solr 4.10.3 导入 Mysql 数据
  13. c语言代码格式的简单介绍
  14. Echarts地图高亮循环数据展示
  15. 我只写注释 —— 让Ai写代码
  16. TEM Imaging Analysis (TIA) for win10
  17. 耐得住寂寞,才能守得住繁华
  18. latex怎么打区间_latex 函数中间点
  19. 深度搜索迷宫问题(C语言实现)
  20. 工业控制计算机固态硬盘,我们如何选择一款好的工业级固态硬盘?

热门文章

  1. DAY2-python基础1
  2. 一步步学习SpringBoot(一) 快速搭建一个web
  3. SL400之换轴篇@屏轴门
  4. 用linux搭建ntp服务,使用linux配置NTP Server
  5. MYSQL 常用SQL
  6. Linux中的Screen命令使用技巧详解
  7. 通过Class来加载输入流和文件
  8. iptables的地址取反操作
  9. chrome调试的JavaScript官方技巧
  10. 清华大学计算机系人机交互,喻 纯 - 清华大学 - 《自然人机交互中的智能输入》(47页)-原创力文档...