Problem Description:

铁头娃制作了很多蛋糕,想分给他的小伙伴们,他的小伙伴很喜欢铁头娃做的蛋糕,每个人都想分到最多蛋糕
铁头娃想到了一个头铁主意:先给小伙伴们从1到N编号,在1-N区间随机选择一个数字K,每个编号取余K等于0的小伙伴会分
到一个蛋糕,重复多次,分蛋糕的过程有时铁头娃想皮一下,就会随机选择一个编号D的小伙伴,问他分到了多少块蛋糕。

Input:

输入数据有多组,每一组第一行包含两个数字N,M(1 <= N <= 50000 , 1 <= M <= 50000)
接下来M行,每一行包含两个数,
第一个数输入1则表示铁头娃要分蛋糕,接下来一个数字K,表示所有编号取余K为0的小伙伴分到一个蛋糕。
第一个数如果是2,表示铁头娃想皮一下,接下来一个数字D。

Output:

对于每次铁头娃的皮,输出D号小伙伴拥有的蛋糕

Sample Input:

5 5
1 1
1 3
1 4
2 2
2 3

Sample Output:

1
2
解题思路:刚开始做这道题时,不知道怎么把因子k的倍数的个数依次加1,(菜鸡弱,做题少,想不出来QAQ,生硬暴力结果TLE,流下了没技术的眼泪Orz)。当看到这个题解时恍然大悟,原来可以这么做。做法:定义一个一维数组,其元素类型是vector容器,用来存放每个数组元素下标的所有因子。再定义一个一维数组用来存放每个数被标记的次数。这里要转换一下求解思路:把分蛋糕看做是数字出现的次数,每次取编号k仅将其次数加1,当访问编号D元素分到多少个蛋糕时,只需将D中每个因子的个数加起来即为编号D分到蛋糕的个数,这样就大大降低了时间复杂度。
AC代码:
 #include<bits/stdc++.h>
using namespace std;
const int maxn=;
vector<int> vec[maxn];//把数组中每一个元素定义为vector容器,存放的是对应下标的所有因子
void init(){
for(int i=;i<maxn;++i)vec[i].clear();
vec[].push_back();//1的因子只有1
for(int i=;i<=;++i){
vec[i].push_back();
vec[i].push_back(i);//包括1和它本身的因子先放进容器
}
for(int i=;i<=;++i)//i是j的因子
for(int j=i*;j<=maxn;j+=i)//i的倍数即为j的因子
vec[j].push_back(i);
}
int n,m,x,y,cnt[maxn];//数组cnt记录每个因子的个数
int main(){
init();//打表
while(cin>>n>>m){
memset(cnt,,sizeof(cnt));//初始化
while(m--){
cin>>x>>y;
if(x==)cnt[y]++;//将y这个因子的个数加1
else{
int ans=;
for(size_t i=;i<vec[y].size();++i)
ans+=cnt[vec[y][i]];//将D中每个因子的个数全部加起来
cout<<ans<<endl;
}
}
}
return ;
}

ACM_蛋糕小王子铁头娃的更多相关文章

  1. 终极蛇皮上帝视角之铁头娃之鲁迅之暑假闲的慌之bilibili看尚学堂网课的非洲酋长java小复习

    转自https://www.sxt.cn/Java_jQuery_in_action/eight-cache-problem.html 第一个点 自动装箱与拆箱的功能是所谓的"编译器蜜糖(C ...

  2. 20164305 徐广皓 Exp5 MSF基础应用

    一.知识点总结 二.攻击实例 主动攻击的实践 ms08_067(win7) payload/generic/shell_reverse_tcp(失败) payload/windows/meterpre ...

  3. Mybatis从认识到了解

    目录 MyBatis的介绍 介绍: 为什么选择MyBatis: 与Hibernate的对比: MyBatis的优点: 入门示例 Mybatis核心组件 四大核心组件 SqlSessionFactory ...

  4. Android 逆向实战篇(加密数据包破解)

    1. 实战背景由于工作需要,要爬取某款App的数据,App的具体名称此处不便透露,避免他们发现并修改加密逻辑我就得重新破解了. 爬取这款App时发现,抓包抓到的数据是加密过的,如图1所示(原数据较长, ...

  5. React自己写的一个地图小组件

    由于今天比较闲,就玩了玩react,然后就封装了一个地图的组件,当然功能比较简单,因为就是随手写的小东西,但是由于引用了百度API和bee-mobile,所以用起来可能要薛微麻烦一点点,但是我保证,只 ...

  6. python记录_day17 类与类之间的关系

    一.依赖关系 a类的对象是b类方法的参数 这种关系是我用着你,但你不属于我,比如公司和临时工的关系,是很弱的一种关系 class Zhiwu: def __init__(self,name,atk): ...

  7. 魂酥的LNOI2019滚粗记

    $Day -???$ 高一下终于开始了 在开学文化课考试的水题之下混了个(成绩)前排 于是我便油然而生一种自信 我!要!进!省!队! 讲句真话我这么想的时候连自己都觉得自己是个十足的沙雕 我又不是zw ...

  8. 使用BeanShell断言判断请求返回的Json相应结果(不同json格式整理)

    第一种json格式 { "code": 0, "msg": "success", "success": true, &q ...

  9. CSS权重的进制问题

    这是复习篇的第一个知识点,(CSS权重进制在IE6为256,后来扩大到了65536.而现代浏览器则采用更大的数量)在说这个知识点之前我们先来看一个例子 <!DOCTYPE html> &l ...

随机推荐

  1. python3返回值中的none

    浏览器返回null,python3返回none,懵了. google了很多资料,不明就里,这就是没基础的后果啊呀呀呀. 上阮一峰的截图,就这么理解下凑合吧:

  2. python+pyqt5实现24点小游戏

    本文实例为大家分享了python实现24点游戏的具体代码,供大家参考,具体内容如下 描述:一副牌中A.J.Q.K可以当成是1.11.12.13.任意抽取4张牌,用加.减.乘.除(可加括号)把牌面上的数 ...

  3. docke容器使用

    Docker 容器使用 Docker 客户端 docker 客户端非常简单 ,我们可以直接输入 docker 命令来查看到 Docker 客户端的所有命令选项. runoob@runoob:~# do ...

  4. i2c中应答信号信号总结

    i2c如果用到主从的关系的时候,需要考虑: give_ack();//从器件发送,来表示占用总线,让sda总线保持低电平. get_ack();//主器件判断是否有器件占用总线,sda有器件占用,是低 ...

  5. Navicat premium连接Oracle报ORA-12541错误

    1:ORA-12541 原因:Oracle TNS监听服务没开 解决:

  6. windows开启3306端口并用可视化工具访问远程mysql(授权访问)

    开启 MySQL 的远程登陆帐号有两大步: 1.确定服务器上的防火墙没有阻止 3306 端口. MySQL 默认的端口是 3306 ,需要确定防火墙没有阻止 3306 端口,否则远程是无法通过 330 ...

  7. Jenkins+Github持续集成

    由于最近团队代码库从coding迁移到github,在CI工具的选型上尝试了travis-ci和circle-ci,最后决定自己搭建CI服务器,而我也有幸认领了这个任务的调研,因此有了这篇文章. 之前 ...

  8. 我的Android进阶之旅------&gt;Android的ListView数据更新后,怎样使最新的条目能够自己主动滚动到可视范围内?

    在ListView的layout配置中加入 android:transcriptMode="alwaysScroll" <ListView android:id=" ...

  9. InnoDB: Error: Table &quot;mysql&quot;.&quot;innodb_table_stats&quot; not found.

    1,Mysqldump的时候报错例如以下: 2014-05-05 14:12:37 7f004a9a2700 InnoDB: Error: Table "mysql"." ...

  10. Project Perfect让Swift在server端跑起来-引言(一)

    编者语:今天是大年初一.先和大家简单说一句猴年快乐! watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/ ...