HIT 1867 经理的烦恼(树状数组)
来源:互联网 发布:中粮大数据研究院 编辑:程序博客网 时间:2024/06/03 02:25
经理的烦恼
erry是一家公司销售部门的经理。这家公司有很多连锁店,编号为1,2,3,… Jerry每天必须关注每家连锁店的商品数量及其变化,一项很乏味的工作。在连锁店比较少的时候,Jerry喜欢计算编号在[i,j]区间内的连锁店中商品数量为素数的有多少家,但是现在连锁店的数量急剧增长,计算量很大,Jerry很难得出结果。
输入格式
题目有多组输入。每组输入第一行有三个整数:C 连锁店的数量 N 指令的条数 M 每家连锁店初始的商品数量
接下来有N行,每行有一条指令。指令的格式为:
0 x y 连锁店x的商品数量变化值为y,y > 0商品数量增加, y < 0减少
1 i j 输出编号在[i,j]区间内的连锁店中商品数量为素数的有多少家
1 <= i, x, j < 1000000 连锁店中的商品数量a满足 0 <= a < 10000000,C = N = M = 0标志输入结束
输出格式
对于每组输入,输出它的序号。对于一组输入中的1指令输出要求的整数。每组输出后打印一行空行。
样例输入
100000 4 4
0 1 1
1 4 10
0 11 3
1 1 11
20 3 0
1 1 20
0 3 3
1 1 20
0 0 0
样例输出
CASE #1:
0
2
CASE #2:
0
1
直接在树状数组中存素数的个数,然后查的时候直接相减就行了,注意左区间要-1,至于为什么自己考虑
#include <iostream>#include <iomanip>#include<stdio.h>#include<string.h>#include<stack>#include<stdlib.h>#include<queue>#include<map>#include<math.h>#include<algorithm>#include<vector>#define ll long long#define mem(a,b) memset(a,b,sizeof(a))#define maxn 1000010const long long inf=1ll<<62;using namespace std;int a[maxn],num[maxn];int n,m,k;bool judge(int x){ if(x<=1)return 0; for(int i=2;i<=sqrt(x);i++) if(x%i==0) return 0; return 1;}void add(int k,int num){ while(k<=n) { a[k]+=num; k+=k&-k; }}void init(){ mem(a,0); int s=0; if(judge(k)) s=1; for(int i=1;i<=n;i++) num[i]=k,add(i,s); //初始化,若为素数则+1}int read(int k){ int sum=0; while(k) { sum+=a[k]; k-=k&-k; } return sum;}int main(){ int T=0; while(~scanf("%d%d%d",&n,&m,&k),n||m||k) { init(); printf("CASE #%d:\n",++T); int op,x,y; for(int i=1;i<=m;i++) { scanf("%d%d%d",&op,&x,&y); if(op) printf("%d\n",read(y)-read(x-1)); else { int tmp=num[x]; num[x]+=y; if(judge(num[x])) { if(!judge(tmp)) add(x,1); //之前非素,加后为素 } else { if(judge(tmp)) add(x,-1); //之前为素,之后非素 } } } puts(""); } return 0;}
0 0
- HIT 1867 经理的烦恼(树状数组)
- HIT 1867 经理的烦恼(树状数组)
- 树状数组实践-HIT经理的烦恼
- 区间素数个数 树状数组 HIT 1867 经理的烦恼
- HIT 1867 经理的烦恼
- hoj 1867 经理的烦恼 (树状数组)
- hoj1867 经理的烦恼(树状数组)
- Hoj 1867 经理的烦恼(树状数组)
- 【HOJ 1867】经理的烦恼(树状数组)
- 树状数组 经理的烦恼
- hoj 1867_经理的烦恼_树状数组
- HOJ1867 经理的烦恼【树状数组】
- HOJ1867 经理的烦恼 树状数组
- HIT-1867-树状数组
- 树状数组专题(二)hoj1867经理的烦恼
- hoj 1867 哈尔滨工业大学 oj 经理的烦恼 简单的树状数组
- hoj 1867 经理的烦恼
- HOJ 1867 经理的烦恼
- JAVA数据结构——线性表
- 多列表同时进行倒计时
- CNN学习之旅[3]之1962年的猫
- 可能是最通俗易懂的 Java 位操作运算讲解
- spring boot初探(二)——springboot配置log4j
- HIT 1867 经理的烦恼(树状数组)
- 【视频】运行第一个容器
- SpringMVC中使用过程中遇到的问题
- JavaScript 1.2 数据类型
- (4.5.5.1) Espresso的简介、下载和安装
- HTML5中最新的标签学习总结
- 《算法分析与设计》Week 9
- 欢迎使用CSDN-markdown编辑器
- p12文件和provision profile文件作用