题意略。

开始想开一个三维的树状数组,但是一算空间不够,正解是离线操作,按位来计算,一共是10位,所以总共是扫10遍,第i遍只处理第i位的询问,

注意在修改后,要把当前这个位的值存下来(这就是cur数组的作用)!

#include<bits/stdc++.h>
#define maxn 100005
using namespace std; struct op{
int kind,l,r,d,p,x,y;
}; int BIT[][maxn];
int a[maxn],T,N,M,tens[],cur[maxn];
int ans[maxn];
char comd[];
op store[maxn]; int lowbit(int k){
return k & -k;
}
void add(int digit,int pos,int val){
while(pos <= N){
BIT[digit][pos] += val;
pos += lowbit(pos);
}
}
int sum(int digit,int pos){
int ret = ;
while(pos > ){
ret += BIT[digit][pos];
pos -= lowbit(pos);
}
return ret;
} int main(){
tens[] = ;
for(int i = ;i < ;++i) tens[i] = tens[i - ] * ;
scanf("%d",&T);
while(T--){
scanf("%d%d",&N,&M);
memset(ans,-,sizeof(ans));
for(int i = ;i <= N;++i) scanf("%d",&a[i]);
for(int i = ;i < M;++i){
scanf("%s",comd);
if(comd[] == 'Q'){
store[i].kind = ;
scanf("%d%d%d%d",&store[i].l,&store[i].r,&store[i].d,&store[i].p);
}
else{
store[i].kind = ;
scanf("%d%d",&store[i].x,&store[i].y);
}
}
for(int i = ;i <= ;++i){
memset(BIT,,sizeof(BIT));
for(int j = ;j <= N;++j){
add(a[j] % ,j,);
cur[j] = a[j] % ;
}
for(int j = ;j < M;++j){
//printf("------\n");
if(store[j].kind == && store[j].d == i){
ans[j] = sum(store[j].p,store[j].r) - sum(store[j].p,store[j].l - );
}
else if(store[j].kind == ){
int x = store[j].x,y = store[j].y;
add(cur[x],x,-);
add((y / tens[i - ]) % ,x,);
cur[x] = (y / tens[i - ]) % ;
}
}
for(int j = ;j <= N;++j) a[j] /= ;
}
for(int i = ;i < M;++i){
if(ans[i] == -) continue;
printf("%d\n",ans[i]);
}
}
return ;
} /*
3
7 7
101 123 132 456 78 9 1001
Q 1 4 3 4
Q 1 7 2 0
S 1 401
Q 1 4 3 4
Q 1 7 1 1
S 6 999
Q 1 7 3 1 5 7
10 11 12 13 14
Q 1 5 2 1
Q 1 5 1 0
Q 1 5 1 1
Q 1 5 3 0
Q 1 5 3 1
S 1 100
Q 1 5 3 1 6 5
2147483647 2147483647 2147483647 2147483647 2147483647 2147483647
Q 1 5 1 7
Q 2 6 10 2
S 6 0
Q 1 7 1 0
Q 1 7 2 0
*/

HDU 5057的更多相关文章

  1. hdu 5057 Argestes and Sequence(分块算法)

    Argestes and Sequence Time Limit: 5000/2500 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot ...

  2. HDU 5057 Argestes and Sequence --树状数组(卡内存)

    题意:给n个数字,每次两种操作: 1.修改第x个数字为y. 2.查询[L,R]区间内第D位为P的数有多少个. 解法:这题当时被卡内存了,后来看了下别人代码发现可以用unsigned short神奇卡过 ...

  3. hdu 5057 Argestes and Sequence

    Argestes and Sequence Time Limit: 5000/2500 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot ...

  4. hdu 5057 Argestes and Sequence (数状数组+离线处理)

    题意: 给N个数.a[1]....a[N]. M种操作: S X Y:令a[X]=Y Q L R D P:查询a[L]...a[R]中满足第D位上数字为P的数的个数 数据范围: 1<=T< ...

  5. [kmp+dp] hdu 4628 Pieces

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4622 Reincarnation Time Limit: 6000/3000 MS (Java/Ot ...

  6. hdu 5055(坑)

    题目链接:http://acm.hdu.edu.cn/showproblem.php? pid=5055 Bob and math problem Time Limit: 2000/1000 MS ( ...

  7. HDOJ 2111. Saving HDU 贪心 结构体排序

    Saving HDU Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  8. 【HDU 3037】Saving Beans Lucas定理模板

    http://acm.hdu.edu.cn/showproblem.php?pid=3037 Lucas定理模板. 现在才写,noip滚粗前兆QAQ #include<cstdio> #i ...

  9. hdu 4859 海岸线 Bestcoder Round 1

    http://acm.hdu.edu.cn/showproblem.php?pid=4859 题目大意: 在一个矩形周围都是海,这个矩形中有陆地,深海和浅海.浅海是可以填成陆地的. 求最多有多少条方格 ...

随机推荐

  1. 实战SpringCloud响应式微服务系列教程(第一章)

    前言 在当今互联网飞速发展的时代,业务需求不断的更新和产品的迭代给系统开发过程和编程模式也带来巨大挑战,Spring Cloud微服务也随之应用而生,从springboot1.x到springboot ...

  2. 从windows10迁移到Linux Deepin

    如题, 这几天从windows系统迁移到deepin的linux系统花了很多时间, 以致最近都没时间来博客园.现在将这几天的成果分享出来, 顺便也做个记录.先不多说, 上一张新系统界面. 其实在装de ...

  3. powershell小脚本--批量添加用户属性----导出登录时间

    需求1:某公司所有员工少了MAIL属性,需要批量添加.例如,用户chenyy  添加邮件属性chenyy@xxxx.com 先导出(只导出名字)备用: Get-ADUser -Filter * -Pr ...

  4. plotly之set_credentials_file问题

    相信了解可视化的同学们都听说过plotly,笔者也是第一次了解这个网站,然后兴冲冲地设置,但是没想到第一次进行在线账号初始化就出现了问题! python3报错为module 'plotly.tools ...

  5. win系统上Anaconda国内镜像配置

    清华镜像2019.6.15已恢复 中科大镜像2019.7.1停机维护后恢复 1.打开anaconda prompt 2.添加清华镜像1:https://mirrors.tuna.tsinghua.ed ...

  6. 2019中山纪念中学夏令营-Day9[JZOJ](第六次模拟赛)

    Begin (题目的排序方式:Unkown其实是按心情排的) 异或:(摘自百度百科) 异或(xor)是一个数学运算符.它应用于逻辑运算.异或的数学符号为“⊕”,计算机符号为“xor”.其运算法则为: ...

  7. Vue系列:滚动页面到指定位置实现

    方法1:scrollTop 滚动到某位置 方法2:scrollTo,scrollBy,scroll滚动到某位置 方法3:scrollIntoView() 实现滚动到具体某元素 需注意,上述3种方法都不 ...

  8. if IE语句 | 判断浏览器IE版本及添加升级提示

    本文引自:http://blog.csdn.net/u013372487/article/details/48521929 实现方法 判断当前浏览器是否IE6(或IE6内核) <!--[if I ...

  9. 【0806 | Day 9】异常处理/基本的文件操作

    一.异常处理 异常即报错,可分为语法异常和逻辑异常 1. 语法异常 举个栗子 if #报错 syntaxerror 0 = 1 #报错 syntaxerror ... 正经地举个栗子 print(1) ...

  10. java web 加载Spring --web.xml 篇

    spring是目前最流行的框架.今天谈谈对spring的认识 起步 javaweb中我们首先会遇到的配置文件就是web.xml,这是javaweb为我们封装的逻辑,不在今天的研究中.略过,下面是一个标 ...