CF 121E - Lucky Array(树状数组裸题)
来源:互联网 发布:剑三男神捏脸数据 编辑:程序博客网 时间:2024/05/17 01:38
题目链接:http://codeforces.com/problemset/problem/121/E
题意:幸运数是指只由4,7组成的数,例如4,7,47,74,447……,这道题先给你n个数的数组,再给你m个操作,操作有两种:1、count l r(计算[l,r]区间内幸运数的总数,并输出结果);2、add l r d(区间内的每个数都加d)
思路:由于数组中每个数都小于104,所以只要现对于小于104的数判断是否是幸运数,再将是幸运数的数的每个子节点值赋值为1在求出区间和,区间和就是幸运数的总数
代码:
#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#include <queue>#define N 10005using namespace std;queue<int>q;int vis[N],in[N<<5],num[N<<5],n;void init(){ memset(vis,0,sizeof(vis)); while(!q.empty()) q.pop();q.push(0);while(q.front()<N){ vis[q.front()]=1;q.push(q.front()*10+4);q.push(q.front()*10+7);q.pop();}}int low_bit(int t){ return t&(-t);}int getSum(int end){ int sum=0; while(end>0) { sum+=in[end]; end-=low_bit(end); } return sum;}void Add(int pos,int num){ while(pos<=n) { in[pos]+=num; pos+=low_bit(pos); }}int main(){ init(); int m,a,b,c,ans; char s[10]; scanf("%d%d",&n,&m); memset(in,0,sizeof(in)); for(int i=1;i<=n;i++) { scanf("%d",&num[i]); if(vis[num[i]]) Add(i,1); } while(m--) { scanf("%s",s); if(s[0]=='a') { scanf("%d%d%d",&a,&b,&c); if(!c) continue; for(int i=a;i<=b;i++) { if(vis[num[i]]) Add(i,-1); num[i]+=c; if(vis[num[i]]) Add(i,1); } } else { scanf("%d%d",&a,&b); ans=getSum(b)-getSum(a-1); printf("%d\n",ans); } }return 0;}
0 0
- CF 121E - Lucky Array(树状数组裸题)
- CF 121E Lucky Array 【树状数组】
- CodeForces 121E Lucky Array (树状数组)
- CodeForces 121E -- Lucky Array (树状数组)
- codeforces-121E Lucky Array(树状数组)
- 【线段树】【树状数组】【CF 121E】幸运数列
- CF 293 E Close Vertices (树的分治+树状数组)
- CF - 61E - Enemy is weak(树状数组)
- CF 232 div2 E On Changing Tree 树状数组
- CF 293 E Close Vertices (树的分治+树状数组)
- CF 369E - Valera and Queries(树状数组)
- cf#368-E. Garlands-(二维树状数组)
- CF 315B - Sereja and Array(树状数组)
- CodeForces E. Lucky Array 幸运数列
- cf#348-E. Little Artem and Time Machine-树状数组+map节点(动态开点树状数组)
- UVA 10909 - Lucky Number(树状数组)
- uva 10909 - Lucky Number(树状数组)
- CF 256E Lucky Arrays(线段树+DP)
- MATLAB 基本数据类型和调用方式
- 08-01 接口 异常 文件IO流
- 部分32位Windows数据类型的介绍
- 字符串相关
- OPENWRT网络打印机TCP/IP共享设置教程 以703N为例
- CF 121E - Lucky Array(树状数组裸题)
- mysql中事物的隐性的提交
- 求一个字符串中连续出现次数最多的子串
- HDOJ 5335 Walk Out 贪心+BFS
- JAVA基础一大堆0801接口+匿名类+IO流
- 查看文件常用指令cat,tac,nl,more,less,head,tail,od
- hdu 4638 Group (离线树状数组)
- 56 - 链表中环的入口节点
- ActiveMQ-Web应用