【分块】hdu5057 Argestes and Sequence
分块,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的更多相关文章
- hdu5057 Argestes and Sequence 分块
Time Limit: / MS (Java/Others) Memory Limit: / K (Java/Others) Total Submission(s): Accepted Submiss ...
- hdu 5057 Argestes and Sequence(分块算法)
Argestes and Sequence Time Limit: 5000/2500 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
- hdu 5057 Argestes and Sequence
Argestes and Sequence Time Limit: 5000/2500 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
- HDU 5057 Argestes and Sequence --树状数组(卡内存)
题意:给n个数字,每次两种操作: 1.修改第x个数字为y. 2.查询[L,R]区间内第D位为P的数有多少个. 解法:这题当时被卡内存了,后来看了下别人代码发现可以用unsigned short神奇卡过 ...
- 【HDOJ】5057 Argestes and Sequence
树状数组,其实很简单.只是MLE. #include <iostream> #include <cstdio> #include <cstring> using n ...
- 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< ...
- HDU5057(分块)
Argestes and Sequence Time Limit: 5000/2500 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
- BestCoder Round #11 (Div. 2) 题解
HDOJ5054 Alice and Bob Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/O ...
- BestCoder Round #11 题解集合
1001.Alice and Bob 签到题*1,只要x * 2 == n && y * 2 == m就满足条件. var m, n, x, y : int64; begin whil ...
随机推荐
- 如何使用Navicat备份数据库脚本
Navicat是一个实用的工具,可以用来备份数据库(Oracle.MySQL.SQLServer)脚本. 备份步骤如下: 1.打开已建立的数据库连接,鼠标右键点击,选择[转储SQL文件]->[结 ...
- P2764 最小路径覆盖问题
题目描述 «问题描述: 给定有向图G=(V,E).设P 是G 的一个简单路(顶点不相交)的集合.如果V 中每个顶点恰好在P 的一条路上,则称P是G 的一个路径覆盖.P 中路径可以从V 的任何一个顶点开 ...
- bzoj 5094 [Lydsy1711月赛]硬盘检测 概率dp
[Lydsy1711月赛]硬盘检测 Time Limit: 1 Sec Memory Limit: 256 MBSubmit: 273 Solved: 75[Submit][Status][Dis ...
- Out of memory due to hash maps used in map-side aggregation解决办法
在运行一个group by的sql时,抛出以下错误信息: Task with the most failures(4): -----Task ID: task_201411191723_723592 ...
- shell监控进程是否存在
1.直接给代码:我这个是两个程序.多半要写成函数 [root@java1 src]# cat checkprocess.sh #!/bin/bashcheckprocess(){ps -ef|grep ...
- es6+最佳入门实践(14)
14.模版字符串 模版字符串(template string)是增强版的字符串,定义一个模版字符串需要用到反引号 let s = `这是一个模版字符串` console.log(s) 14.1.模版字 ...
- express添加拦截器
var express = require('express') , routes = require('./routes') , http = require('http') , pat ...
- BigDecimal与Long、int之间的互换
在实际开发过程中BigDecimal是一个经常用到的数据类型,它和int Long之间可以相互转换. 转换关系如下代码展示: int 转换成 BigDecimal 数据类型 //int 转换成 big ...
- 【洛谷 P3306】[SDOI2013]随机数生成器 (BSGS)
题目链接 怎么这么多随机数生成器 题意见原题. 很容易想到\(BSGS\)算法,但是递推式是\(X_{i+1}=(aX_i+b)\mod p\),这显然不是一个等比数列. 但是可以用矩阵乘法来求出第\ ...
- mongoDB支持的数据类型
下表为MongoDB中常用的几种数据类型. 数据类型 描述 String 字符串.存储数据常用的数据类型.在 MongoDB 中,UTF-8 编码的字符串才是合法的. Integer 整型数值.用于存 ...