分块,v[i][j][k]表示第i块内第j位是k的元素数。非常好写。注意初始化

要注意题意,①第i位是从右往左算的。

②若x没有第i位,则用前导零补齐10位。比如103---->0000000103。

 #include<cstdio>
#include<cmath>
#include<cstring>
using namespace std;
const int MOD[]={,,,,,,,,,};
int T,n,m,ql,qr,x,y,a[],l[],r[],v[][][],sz,num[],sum;
char op[];
inline int Bit(const int &x,const int &p) {return (x/MOD[p-])%;}
void makeblock()
{
memset(v,,sizeof(v));
sz=sqrt(n); sum=;
for(sum=;sum*sz<n;sum++)
{
l[sum]=(sum-)*sz+;
r[sum]=sum*sz;
for(int i=l[sum];i<=r[sum];i++)
{
int t=a[i],cnt=;
while(t) {v[sum][++cnt][t%]++; t/=;}
for(cnt++;cnt<=;cnt++) v[sum][cnt][]++;
num[i]=sum;
}
}
l[sum]=sz*(sum-)+; r[sum]=n;
for(int i=l[sum];i<=r[sum];i++)
{
int t=a[i],cnt=;
while(t) {v[sum][++cnt][t%]++; t/=;}
for(cnt++;cnt<=;cnt++) v[sum][cnt][]++;
num[i]=sum;
}
}
inline void query()
{
int ans=;
if(num[ql]+>=num[qr]) {for(int i=ql;i<=qr;i++) if(Bit(a[i],x)==y) ans++;}
else
{
for(int i=ql;i<=r[num[ql]];i++) if(Bit(a[i],x)==y) ans++;
for(int i=l[num[qr]];i<=qr;i++) if(Bit(a[i],x)==y) ans++;
for(int i=num[ql]+;i<num[qr];i++) ans+=v[i][x][y];
}
printf("%d\n",ans);
}
void update()
{
int cnt=;
while(a[x]) {v[num[x]][++cnt][a[x]%]--; a[x]/=;}
for(cnt++;cnt<=;cnt++) v[num[x]][cnt][]--;
int t=y; a[x]=y; cnt=;
while(t) {v[num[x]][++cnt][t%]++; t/=;}
for(cnt++;cnt<=;cnt++) v[num[x]][cnt][]++;
}
int main()
{
scanf("%d",&T);
for(;T>;T--)
{
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++) scanf("%d",&a[i]);
makeblock();
for(int i=;i<=m;i++)
{
scanf("%s",op);
if(op[]=='Q') {scanf("%d%d%d%d",&ql,&qr,&x,&y); query();}
else {scanf("%d%d",&x,&y); update();}
}
}
return ;
}

【分块】hdu5057 Argestes and Sequence的更多相关文章

  1. hdu5057 Argestes and Sequence 分块

    Time Limit: / MS (Java/Others) Memory Limit: / K (Java/Others) Total Submission(s): Accepted Submiss ...

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

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

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

  5. 【HDOJ】5057 Argestes and Sequence

    树状数组,其实很简单.只是MLE. #include <iostream> #include <cstdio> #include <cstring> using n ...

  6. 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< ...

  7. HDU5057(分块)

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

  8. BestCoder Round #11 (Div. 2) 题解

    HDOJ5054 Alice and Bob Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/O ...

  9. BestCoder Round #11 题解集合

    1001.Alice and Bob 签到题*1,只要x * 2 == n && y * 2 == m就满足条件. var m, n, x, y : int64; begin whil ...

随机推荐

  1. POJ2912:Rochambeau(带权并查集)

    Rochambeau Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 5208   Accepted: 1778 题目链接:h ...

  2. HDFS集中化缓存管理

    概述 HDFS中的集中化缓存管理是一个明确的缓存机制,它允许用户指定要缓存的HDFS路径.NameNode会和保存着所需快数据的所有DataNode通信,并指导他们把块数据缓存在off-heap缓存中 ...

  3. 精通javascript笔记(智能社)——简易tab选项卡及应用面向对象方法实现

    javascript代码(常规方式/面向过程): <script type="text/javascript"> window.onload=function(){ v ...

  4. 使用Word2010发布博客文章

    发布博客可以直接在web页面上面编辑,也可以使用客户端编辑,其中客户端支持windows live writer以及word本身的发布博客功能.个人试用后倾向于使用word发布博客文章. 下面的内容转 ...

  5. C#三层中的分页

    最近写了一个winform的管理系统,里面的分页同学推荐了几种,感觉都不好用,比较麻烦,自己就找了一个比较简单的分页,利用数据存储过程来分页. reate proc usp_User@pageInde ...

  6. hdu 3003 Pupu

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3003 题目大意:一种动物身上有n种不同的皮肤,每种皮肤有透明很不透明两种状态,经过一天的日晒,透明的可 ...

  7. python基础===python3中 http.client 和 urllib的那些事

    import http.client #python3中没有了 httplib的库 #python 3.x中urllib库和urilib2库合并成了urllib库.. #其中urllib2.urlop ...

  8. url 拼接的一个模块furl

    from furl import furl getlongtexturl="https://weibo.com/p/aj/mblog/getlongtext" params={ & ...

  9. phpstudy2014没有mysqldumpslow.pl及其在性能优化的作用

    mysqldumpslow.pl的作用是监控mysql的性能瓶颈的 1)在phpstudy2014中没有这个mysqldumpslow.pl所以需要去下载一个然后放置于mysql/bin的文件夹中,由 ...

  10. 搜索引擎--范例:SAE创建新应用,SVN管理代码

    最初接触的平台是新浪SAE平台,虽然限制多得要命,速度也不怎么样,但无论怎么样,人家是“免费的”,免费的东西你还想怎么样?是不是? 1:注册登录新浪SAE,这个不用多说,相信你们的智商 2:创建一个新 ...