【HOJ 1867】经理的烦恼(树状数组)
来源:互联网 发布:韩国网络剧推荐 编辑:程序博客网 时间:2024/05/20 22:02
问题描述
Jerry是一家公司销售部门的经理。这家公司有很多连锁店,编号为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
算法讨论
动态区间求和问题,用树状数组正合适。
#include<cstdio>#include<cstring>#include<cmath>using namespace std;int a[1000005],p[1000005];int t,n,m,c,x,y;bool f;int lowbit(int x){ return x & (-x);}int modity(int x,int delta){ while (x<=t) { a[x]=a[x]+delta; x=x+lowbit(x); }}bool check(int x){ if (x==0 || x==1) return false; if (x==2) return true; for (int i=2;i<=sqrt(x);i++) if (x % i==0) return false; return true;}int sum(int x){ int s=0; while (x>0) { s=s+a[x]; x=x-lowbit(x); } return s;}int main(){ int s=0; while (scanf("%d%d%d", &t, &n, &m) , n != 0 || m != 0 || t != 0) { s++; memset(a,0,sizeof(a)); f=false; printf("CASE #%d:\n",s); if (check(m)) f=true; for (int i=1;i<=t;i++) { p[i]=m; if (f) modity(i,1); } for (int k=1;k<=n;k++) { scanf("%d%d%d",&c,&x,&y); if (c==0) { int l=p[x]; p[x]=p[x]+y; if (check(p[x])==false && check(l)) modity(x,-1); if (check(p[x]) && check(l)==false) modity(x,1); } else { printf("%d\n",sum(y)-sum(x-1)); } } printf("\n"); }}
Pixiv ID:52326658
阅读全文
0 0
- hoj 1867 经理的烦恼 (树状数组)
- Hoj 1867 经理的烦恼(树状数组)
- 【HOJ 1867】经理的烦恼(树状数组)
- hoj 1867_经理的烦恼_树状数组
- hoj 1867 哈尔滨工业大学 oj 经理的烦恼 简单的树状数组
- hoj 1867 经理的烦恼
- HOJ 1867 经理的烦恼
- HOJ 1867 经理的烦恼
- hoj1867 经理的烦恼(树状数组)
- HIT 1867 经理的烦恼(树状数组)
- HIT 1867 经理的烦恼(树状数组)
- 树状数组 经理的烦恼
- hoj 经理的烦恼
- Hoj(哈尔滨工业大学) 1867 经理的烦恼
- 区间素数个数 树状数组 HIT 1867 经理的烦恼
- HOJ1867 经理的烦恼【树状数组】
- 树状数组实践-HIT经理的烦恼
- HOJ1867 经理的烦恼 树状数组
- F1V3.0-图形-自动成图-系统图算法介绍
- 【编程语言】C#中字符串的内存分配
- JVM里java对象的创建及内存分配和访问定位
- Linux下安装python-opencv ,亲测可用
- 个人博客
- 【HOJ 1867】经理的烦恼(树状数组)
- numpy库中一维矩阵的一些坑点
- 虚拟机的安装
- (读书笔记)设计模式简要
- Django-时区问题
- java transient简介
- HM学习心得1
- Strategy策略设计模式(十八)
- java代理