(121E)codeforce
来源:互联网 发布:脸部黄金比例软件 编辑:程序博客网 时间:2024/04/29 05:43
#include<iostream>
#include<cstdio>
#include<string.h>
#include<string>
#include<stack>
#include<set>
#include<algorithm>
#include<cmath>
#include<vector>
#include<map>
#define ll __int64
#define lll unsigned long long
#define MAX 1000009
#define eps 1e-8
#define INF 0xfffffff
#define mod 1000000007
/*
题意:BIT
想法:先枚举范围内的数有多少是幸运数字,然后标记,然后求前缀和。 对于添加的,先去标记,然后加数值,然后再加标记。
*/
using namespace std;
int n,m;
int c[MAX];
int a[MAX];
int op[MAX];//判断数组
int lowbit(int x)
{
return x&(-x);
}
int sum(int x)
{
int ret = 0;
while(x>0)
{
ret+=c[x];
x-=lowbit(x);
}
return ret;
}
void add(int x,int d)
{
while(x<=n)
{
c[x]+=d;
x+=lowbit(x);
}
}
int main()
{
for(int i = 1;i<=10009;i++)//枚举
{
int tmp = i;
int flag = 0;
while(tmp)
{
int k = tmp%10;
if(k!=4&&k!=7)
{
flag = 1;
break;
}
tmp/=10;
}
if(!flag)
op[i] = 1;
}
int l,r;
while(~scanf("%d%d",&n,&m))
{
memset(c,0,sizeof(c));
for(int i = 1;i<=n;i++)
{
scanf("%d",&a[i]);
if(op[a[i]])
add(i,1);
}
while(m--)
{
char str[15];
cin>>str>>l>>r;
if(str[0]=='c')
{
//cout<<sum(r)<<" "<<sum(l)<<endl;
printf("%d\n",sum(r) - sum(l-1));
}
else
{
int d;
scanf("%d",&d);
for(int i = l;i<=r;i++)
{
if(op[a[i]])
{
add(i,-1);//去标记
}
a[i]+=d;//加D
if(op[a[i]])
{
add(i,1);//重新标记
}
}
}
}
}
return 0;
}
#include<cstdio>
#include<string.h>
#include<string>
#include<stack>
#include<set>
#include<algorithm>
#include<cmath>
#include<vector>
#include<map>
#define ll __int64
#define lll unsigned long long
#define MAX 1000009
#define eps 1e-8
#define INF 0xfffffff
#define mod 1000000007
/*
题意:BIT
想法:先枚举范围内的数有多少是幸运数字,然后标记,然后求前缀和。 对于添加的,先去标记,然后加数值,然后再加标记。
*/
using namespace std;
int n,m;
int c[MAX];
int a[MAX];
int op[MAX];//判断数组
int lowbit(int x)
{
return x&(-x);
}
int sum(int x)
{
int ret = 0;
while(x>0)
{
ret+=c[x];
x-=lowbit(x);
}
return ret;
}
void add(int x,int d)
{
while(x<=n)
{
c[x]+=d;
x+=lowbit(x);
}
}
int main()
{
for(int i = 1;i<=10009;i++)//枚举
{
int tmp = i;
int flag = 0;
while(tmp)
{
int k = tmp%10;
if(k!=4&&k!=7)
{
flag = 1;
break;
}
tmp/=10;
}
if(!flag)
op[i] = 1;
}
int l,r;
while(~scanf("%d%d",&n,&m))
{
memset(c,0,sizeof(c));
for(int i = 1;i<=n;i++)
{
scanf("%d",&a[i]);
if(op[a[i]])
add(i,1);
}
while(m--)
{
char str[15];
cin>>str>>l>>r;
if(str[0]=='c')
{
//cout<<sum(r)<<" "<<sum(l)<<endl;
printf("%d\n",sum(r) - sum(l-1));
}
else
{
int d;
scanf("%d",&d);
for(int i = l;i<=r;i++)
{
if(op[a[i]])
{
add(i,-1);//去标记
}
a[i]+=d;//加D
if(op[a[i]])
{
add(i,1);//重新标记
}
}
}
}
}
return 0;
}
0 0
- (121E)codeforce
- E. Cubes codeforce 180/E
- COdeforce 14E
- codeforce 18E
- Codeforce 445E
- CodeForce 27E
- codeforce 78E
- codeforce round 399# E
- Codeforce 785E(分块)
- codeforce 761E
- codeforce 416 E floyd
- codeforce 888E
- codeforce 899E
- codeforce-24e 解题报告
- codeforce 337E-divisor tree
- codeforce 342E 树链剖分 || 分块
- codeforce 342E 树链剖分 || 分块
- codeforce 659E (dfs 水~)
- vs 2008 工程添加引用lib静态库 以及 移植c/c++工程
- 排序算法——二分法插入排序
- 【iOS开发】关于图片轮播器的实现代码
- 构建高并发高可用的电商平台架构实践
- 欢迎使用CSDN-markdown编辑器
- (121E)codeforce
- 黑马程序员_JAVA:反射
- 【iOS开发】ScrollView的一些常用属性
- OJ 系列之 ASCII 降序排列
- php防盗链
- 求两个等长有序数组的中位数
- 智能指针:Effective c++总结
- 黑马程序员_JAVA:泛型
- 蓝桥杯 啤酒和饮料