ACM_蛋糕小王子铁头娃
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_蛋糕小王子铁头娃的更多相关文章
- 终极蛇皮上帝视角之铁头娃之鲁迅之暑假闲的慌之bilibili看尚学堂网课的非洲酋长java小复习
转自https://www.sxt.cn/Java_jQuery_in_action/eight-cache-problem.html 第一个点 自动装箱与拆箱的功能是所谓的"编译器蜜糖(C ...
- 20164305 徐广皓 Exp5 MSF基础应用
一.知识点总结 二.攻击实例 主动攻击的实践 ms08_067(win7) payload/generic/shell_reverse_tcp(失败) payload/windows/meterpre ...
- Mybatis从认识到了解
目录 MyBatis的介绍 介绍: 为什么选择MyBatis: 与Hibernate的对比: MyBatis的优点: 入门示例 Mybatis核心组件 四大核心组件 SqlSessionFactory ...
- Android 逆向实战篇(加密数据包破解)
1. 实战背景由于工作需要,要爬取某款App的数据,App的具体名称此处不便透露,避免他们发现并修改加密逻辑我就得重新破解了. 爬取这款App时发现,抓包抓到的数据是加密过的,如图1所示(原数据较长, ...
- React自己写的一个地图小组件
由于今天比较闲,就玩了玩react,然后就封装了一个地图的组件,当然功能比较简单,因为就是随手写的小东西,但是由于引用了百度API和bee-mobile,所以用起来可能要薛微麻烦一点点,但是我保证,只 ...
- python记录_day17 类与类之间的关系
一.依赖关系 a类的对象是b类方法的参数 这种关系是我用着你,但你不属于我,比如公司和临时工的关系,是很弱的一种关系 class Zhiwu: def __init__(self,name,atk): ...
- 魂酥的LNOI2019滚粗记
$Day -???$ 高一下终于开始了 在开学文化课考试的水题之下混了个(成绩)前排 于是我便油然而生一种自信 我!要!进!省!队! 讲句真话我这么想的时候连自己都觉得自己是个十足的沙雕 我又不是zw ...
- 使用BeanShell断言判断请求返回的Json相应结果(不同json格式整理)
第一种json格式 { "code": 0, "msg": "success", "success": true, &q ...
- CSS权重的进制问题
这是复习篇的第一个知识点,(CSS权重进制在IE6为256,后来扩大到了65536.而现代浏览器则采用更大的数量)在说这个知识点之前我们先来看一个例子 <!DOCTYPE html> &l ...
随机推荐
- 【jenkins】UnicodeEncodeError: 'ascii' codec can't encode character
https://stackoverflow.com/questions/6076203/how-do-you-set-the-default-encoding-in-jenkins
- ssh中将常用的命令做别名
1.vim ~/.bashrc 将光标落到user下面 2. 输入 alias x=‘ssh的命令’ 3.按ESC键,退出输入状态: 4.按:,然后输入wq,保存退出: 5. source ~/.ba ...
- 洛谷 2777 [AHOI2016初中组]自行车比赛
[题解] 为了让某个选手能够获得总分第一,就让他最后一天的得分是n,并且让别的选手的得分的最大值尽量小.于是我们先把目前积分排序,并且让他们最后一天的排名刚好与积分排名相反.即某个积分排名为X的人最后 ...
- PAT 1020. Tree Traversals
PAT 1020. Tree Traversals Suppose that all the keys in a binary tree are distinct positive integers. ...
- layui laypage 当前页刷新问题
困扰了好几天的问题,终于找到答案了 在执行完代码后添加下面的代码实现当前页的刷新 $(".layui-laypage-btn").click(); 在解决问题的过程中,其实已经注意 ...
- noip模拟赛 第K小数
[问题描述]有两个正整数数列,元素个数分别为N和M.从两个数列中分别任取一个数相乘,这样一共可以得到N*M个数,询问这N*M个数中第K小数是多少.[输入格式]输入文件名为number.in.输入文件包 ...
- python函数基础:嵌套函数、作用域、匿名函数、高阶函数、递归函数
嵌套函数: 1. 函数内部可以再定义函数 2. 函数只有被调用之后才会执行 看如下代码: age = 18 def func1(): age = 22 print(age) def func2(): ...
- SpringBoot 拦截器--只允许进入登录注册页面,没登录不允许查看其它页面
SpringBoot注册登录(一):User表的设计点击打开链接 SpringBoot注册登录(二):注册---验证码kaptcha的实现点击打开链接 SpringBoot注册登录(三):注册--验证 ...
- HBase连接数据库(集群)
一.使用java接口对hbase进行表的创建1.引入需要的jar包2.代码: public static void main(String[] args) throws Exception { //得 ...
- 【CV论文阅读】YOLO:Unified, Real-Time Object Detection
YOLO的一大特点就是快,在处理上可以达到完全的实时.原因在于它整个检测方法非常的简洁,使用回归的方法,直接在原图上进行目标检测与定位. 多任务检测: 网络把目标检测与定位统一到一个深度网络中,而且可 ...