【分块】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 ...
随机推荐
- 注意@Bean中的initMethod和destroyMethod
@Configuration public class AppConfig { @Bean(initMethod = "init") public Foo foo() { retu ...
- 前端面试:什么是css reset
HTML标签在浏览器中都有默认的样式,不同的浏览器的默认样式之间存在差别.例如ul默认带有缩进样式,在IE下,它的缩进是由margin实现的,而在Firefox下却是由padding实现的.开发时浏览 ...
- POJ 3617 Best Cow Line (模拟)
题目链接 Description FJ is about to take his N (1 ≤ N ≤ 2,000) cows to the annual"Farmer of the Yea ...
- eclipse使用git下载项目
准备工作: 目的:从远程仓库github上down所需的项目 eclipse使用Git插件下载github上项目 eclipse版本:eclipse4.5 64位 jdk版本:jdk-1.7 64位 ...
- Python爬虫学习 - day1 - 爬取图片
利用Python完成简单的图片爬取 最近学习到了爬虫,瞬时觉得很高大上,想取什么就取什么,感觉要上天.这里分享一个简单的爬取汽车之家文章列表的图片教程,供大家学习. 需要的知识点储备 本次爬虫脚本依赖 ...
- [Leetcode Week8]Edit Distance
Edit Distance 题解 原创文章,拒绝转载 题目来源:https://leetcode.com/problems/edit-distance/description/ Description ...
- python基础复习-1-2 数据类型-str、list、tuple、dict
数据类型 数字 引号: 123 数值 '123' 字符串 整数:ini long 范围:(-2**31 - 2**31) num = 123 长整型 long (L) num = 123L 浮点型:f ...
- KVM(八)使用 libvirt 迁移 QEMU/KVM 虚机和 Nova 虚机
1. QEMU/KVM 迁移的概念 迁移(migration)包括系统整体的迁移和某个工作负载的迁移.系统整理迁移,是将系统上所有软件包括操作系统完全复制到另一个物理机硬件机器上.虚拟化环境中的迁移, ...
- 《锋利的JQuery》读书要点笔记2——DOM操作
第三章 jQuery中的DOM操作 3.1 DOM(Document Object Model)操作的分类 1. DOM Core 例如:document.getElementsByTagNam ...
- Django组件之contenttype的应用
contenttypes 是Django内置的一个应用,可以追踪项目中所有app和model的对应关系,并记录在ContentType表中. 每当我们创建了新的model并执行数据库迁移后,Conte ...