Codeforces Beta Round #91 (Div. 1 Only) E. Lucky Array 分块
4 seconds
256 megabytes
standard input
standard output
Petya loves lucky numbers. Everybody knows that lucky numbers are positive integers whose decimal representation contains only the lucky digits 4 and 7. For example, numbers 47, 744, 4 are lucky and 5, 17, 467 are not.
Petya has an array consisting of n numbers. He wants to perform m operations of two types:
- add l r d — add an integer d to all elements whose indexes belong to the interval from l to r, inclusive (1 ≤ l ≤ r ≤ n, 1 ≤ d ≤ 104);
- count l r — find and print on the screen how many lucky numbers there are among elements with indexes that belong to the interval from l to r inclusive (1 ≤ l ≤ r ≤ n). Each lucky number should be counted as many times as it appears in the interval.
Petya has a list of all operations. The operations are such that after all additions the array won't have numbers that would exceed 104. Help Petya write a program that would perform these operations.
The first line contains two integers n and m (1 ≤ n, m ≤ 105) — the number of numbers in the array and the number of operations correspondingly. The second line contains n positive integers, none of which exceeds 104 — those are the array numbers. Next m lines contain operations, one per line. They correspond to the description given in the statement.
It is guaranteed that after all operations are fulfilled each number in the array will not exceed 104.
For each operation of the second type print the single number on the single line — the number of lucky numbers in the corresponding interval.
3 6
2 3 4
count 1 3
count 1 2
add 1 3 2
count 1 3
add 2 3 3
count 1 3
1
0
1
1
4 5
4 4 4 4
count 1 4
add 1 4 3
count 1 4
add 2 3 40
count 1 4
4
4
4
In the first sample after the first addition the array will look in the following manner:
4 5 6
After the second addition:
4 8 9
The second sample after the first addition:
7 7 7 7
After the second addition:
7 47 47 7
题意:只含有4,7的是lucky numbers,区间加,区间询问区间有多少个lucky numbers;
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define mod 1000000007
#define esp 0.00000000001
const int N=1e5+,M=1e6+,inf=1e9;
int good[N];
int check(int x)
{
while(x)
{
if(x%!=&&x%!=)
return ;
x/=;
}
return ;
}
vector<int>v;
int pos[N];
char ch[];
int flag[][];
int a[N];
int add[];
#define K 1800
int main()
{
for(int i=;i<=;i++)
if(check(i))
{
good[i]=;
v.push_back(i);
}
int n,m;
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)
{
pos[i]=(i-)/K+;
scanf("%d",&a[i]);
flag[pos[i]][a[i]]++;
}
while(m--)
{
int l,r;
scanf("%s%d%d",ch,&l,&r);
if(ch[]=='c')
{
int ans=;
if(pos[l]==pos[r])
{
for(int i=l;i<=r;i++)
{
if(good[add[pos[i]]+a[i]])
ans++;
}
printf("%d\n",ans);
continue;
}
int L=min(n,pos[l]*K);
for(int i=l;i<=L;i++)
{
if(good[a[i]+add[pos[i]]])
ans++;
}
int R=max(,(pos[r]-)*K+);
for(int i=R;i<=r;i++)
{
if(good[a[i]+add[pos[i]]])
ans++;
}
for(int j=;j<v.size();j++)
for(int i=pos[l]+;i<pos[r];i++)
{
if(v[j]>=add[i])
ans+=flag[i][v[j]-add[i]];
}
printf("%d\n",ans);
}
else
{
int d;
scanf("%d",&d);
if(pos[l]==pos[r])
{
for(int i=l;i<=r;i++)
{
flag[pos[i]][a[i]]--;
a[i]+=d;
flag[pos[i]][a[i]]++;
}
continue;
}
int L=min(n,pos[l]*K);
for(int i=l;i<=L;i++)
{
flag[pos[i]][a[i]]--;
a[i]+=d;
flag[pos[i]][a[i]]++;
}
int R=max(,(pos[r]-)*K+);
for(int i=R;i<=r;i++)
{
flag[pos[i]][a[i]]--;
a[i]+=d;
flag[pos[i]][a[i]]++;
}
for(int i=pos[l]+;i<pos[r];i++)
add[i]+=d;
}
}
return ;
}
Codeforces Beta Round #91 (Div. 1 Only) E. Lucky Array 分块的更多相关文章
- Codeforces Beta Round #91 (Div. 1 Only) E. Lucky Array
E. Lucky Array Petya loves lucky numbers. Everybody knows that lucky numbers are positive integers w ...
- codeforces水题100道 第十二题 Codeforces Beta Round #91 (Div. 2 Only) A. Lucky Division (brute force)
题目链接:http://www.codeforces.com/problemset/problem/122/A题意:判断一个数是否能被一个lucky number整除,一个lucky number是一 ...
- Codeforces Beta Round #91 (Div. 2 Only) A. Lucky Division【暴力/判断是不是幸运数字4,7的倍数】
A. Lucky Division time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...
- Codeforces Beta Round #80 (Div. 2 Only)【ABCD】
Codeforces Beta Round #80 (Div. 2 Only) A Blackjack1 题意 一共52张扑克,A代表1或者11,2-10表示自己的数字,其他都表示10 现在你已经有一 ...
- Codeforces Beta Round #83 (Div. 1 Only)题解【ABCD】
Codeforces Beta Round #83 (Div. 1 Only) A. Dorm Water Supply 题意 给你一个n点m边的图,保证每个点的入度和出度最多为1 如果这个点入度为0 ...
- Codeforces Beta Round #79 (Div. 2 Only)
Codeforces Beta Round #79 (Div. 2 Only) http://codeforces.com/contest/102 A #include<bits/stdc++. ...
- Codeforces Beta Round #77 (Div. 2 Only)
Codeforces Beta Round #77 (Div. 2 Only) http://codeforces.com/contest/96 A #include<bits/stdc++.h ...
- Codeforces Beta Round #76 (Div. 2 Only)
Codeforces Beta Round #76 (Div. 2 Only) http://codeforces.com/contest/94 A #include<bits/stdc++.h ...
- Codeforces Beta Round #75 (Div. 2 Only)
Codeforces Beta Round #75 (Div. 2 Only) http://codeforces.com/contest/92 A #include<iostream> ...
随机推荐
- Linux安装JDK、MyEclipse、MySql
一.将下载好的 jdk-7u79-linux-x64.tar.gz 复制到要安装的目录 /usr/lib/jdk (注:jdk文件夹自己创建 sudo mkdir jdk)二.进入到目录 /usr/l ...
- Java URLClassLoader和ClassLoader
开始:看名字都带有ClassLoader,叫做类加载器,事实上是可以理解为动态的加载类,不过,也不是只能加载类,也可以加载其他形式的文件,比如说.properties属性文件. 区别:其实在两个类加载 ...
- IE11下,IIS7.5不自动生成__doPostBack事件
MS在 2013/10/8 已出补丁 http://www.microsoft.com/zh-cn/download/details.aspx?id=39257 https://support.mic ...
- 【jQuery UI 1.8 The User Interface Library for jQuery】.学习笔记.6.Dialog控件
习惯上,我们播放一条简短的信息,或向浏览者询问一个问题,都会用到dialog. 创建一个基本的dialog 使用dialog 选项 形式 启用内置动画 给dialog添加按钮 使用dialog回调函数 ...
- 转Class.forName()用法详解
主要功能 Class.forName(xxx.xx.xx)返回的是一个类 Class.forName(xxx.xx.xx)的作用是要求JVM查找并加载指定的类, 也就是说JVM会执行该类的静态代码段 ...
- 实现Ecshop商品跳到淘宝、京东等的购买链接
今天简单的实现了一下ecshop商品导出到第三方的购买链接功能.大致思路是给商品添加一个buy_link的text字段,存为json结构,然后通过json解析输出到商品购买页面 1.添加字段 增加购买 ...
- 删除ecshop云服务及授权关于官方等信息
一.删除[云服务中心] 删除/admin/cloud.php 删除/admin/templates/menu.htm中以下代码 Ajax.call('cloud.php?is_ajax=1>ac ...
- [ios][opengles]GLKit如何搭一个app的框架
一个外文对GLKit的讲解: Beginning OpenGL ES 2.0 with GLKit Part 1 英文原文链接:http://www.raywenderlich.com/5223 ...
- layer
一款实用的web提示框架!下面是实用这款框架的实例 html代码 <p class='layer_notice'>我们是否是好惹的</p> <input type=&qu ...
- log4j: 不同的类使用不同的日志
有时候会需要某些功能中使用独立的日志文件,以下为代码示例. public final static String LOGGER_NAME = "MyFunction"; priva ...