http://acm.hdu.edu.cn/showproblem.php?pid=5057

分块,保存每个块中每位对应数字的和,复杂的是getmum,左右下标所在的块不能直接读取block数组,要重新自己计算。

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std; int a[],belong[],L[],R[],block[][][],n,m;
int ten[] = {,,,,,,,,,,}; void build()
{
int sizee = sqrt(n);
int num = n/sizee;
if(n%sizee) num++;
for(int i = ;i <= num;i++)
{
L[i] = (i-)*sizee+;
R[i] = i*sizee;
}
for(int i = ;i <= n;i++) belong[i] = (i-)/sizee+;
for(int i = ;i <= n;i++)
{
int temp = a[i];
for(int j = ;j <= ;j++)
{
block[belong[i]][j][temp%]++;
temp /= ;
}
}
} int getnum(int l,int r,int d,int p)
{
int ans = ;
if(belong[l] == belong[r])
{
for(int i = l;i <= r;i++)
{
if((a[i]/ten[d])% == p) ans++;
}
return ans;
} for(int i = belong[l]+;i < belong[r];i++) ans += block[i][d][p];
for(int i = l;i <= R[belong[l]];i++)
{
if((a[i]/ten[d])% == p) ans++;
}
for(int i = L[belong[r]];i <= r;i++)
{
if((a[i]/ten[d])% == p) ans++;
}
return ans;
} void update(int x,int y)
{
for(int i = ;i <= ;i++)
{
block[belong[x]][i][a[x]%]--;
a[x] /= ;
}
a[x] = y;
for(int i = ;i <= ;i++)
{
block[belong[x]][i][y%]++;
y /= ;
}
} int main()
{
int T;
scanf("%d",&T);
while(T--)
{
memset(block,,sizeof(block));
scanf("%d%d",&n,&m);
for(int i = ;i <= n;i++) scanf("%d",&a[i]);
build();
char s[];
while(m--)
{
scanf("%s",s);
if(s[] == 'S')
{
int x,y;
scanf("%d%d",&x,&y);
update(x,y);
}
else
{
int l,r,d,p;
scanf("%d%d%d%d",&l,&r,&d,&p);
printf("%d\n",getnum(l,r,d,p));
}
}
}
return ;
}

HDU_5057_分块的更多相关文章

  1. PHP搭建大文件切割分块上传功能

    背景 在网站开发中,文件上传是很常见的一个功能.相信很多人都会遇到这种情况,想传一个文件上去,然后网页提示"该文件过大".因为一般情况下,我们都需要对上传的文件大小做限制,防止出现 ...

  2. POJ2104 K-th Number [分块做法]

    传送:主席树做法http://www.cnblogs.com/candy99/p/6160704.html 做那倒带修改的主席树时就发现分块可以做,然后就试了试 思想和教主的魔法差不多,只不过那个是求 ...

  3. HDU 4467 分块

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4467 题意:给定n个点m条边的无向图,点被染色(黑0/白1),边带边权.然后q个询问.询问分为两种: ...

  4. 2016 ACM/ICPC Asia Regional Dalian Online 1010 Weak Pair dfs序+分块

    Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total Submissio ...

  5. CC countari & 分块+FFT

    题意: 求一个序列中顺序的长度为3的等差数列. SOL: 对于这种计数问题都是用个数的卷积来进行统计.然而对于这个题有顺序的限制,不好直接统计,于是竟然可以分块?惊为天人... 考虑分块以后的序列: ...

  6. bzoj2002弹(dan)飞绵羊 分块水过

    据说是道lct求深度的题 但是在小猫大的指点下用分块就n^1.5水过了 = =数据忘记加强系列 代码极其不美观,原因是一开始是听小猫大讲的题意,还以为是弹到最前面... #include <cs ...

  7. C语言两种查找方式(分块查找,二分法)

    二分法(必须要保证数据是有序排列的):   分块查找(数据有如下特点:块间有序,块内无序):    

  8. [New Portal]Windows Azure Storage (14) 使用Azure Blob的PutBlock方法,实现文件的分块、离线上传

    <Windows Azure Platform 系列文章目录> 相关内容 Windows Azure Platform (二十二) Windows Azure Storage Servic ...

  9. BZOJ 3343: 教主的魔法 [分块]【学习笔记】

    3343: 教主的魔法 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 1172  Solved: 526[Submit][Status][Discus ...

随机推荐

  1. 小小知识点(三十七)OFDM和OFDMA的区别以及OFDMA与SC-FDMA的区别

    OFDM和OFDMA的区别 OFDM(orthogonal frequency division multiplexing),which assigns one block (in time ) to ...

  2. 组件与props简解

    一.创建组件 1.函数式创建 特点: 组件不能访问this对象 组件无法访问生命周期的方法 无状态组件只能访问输入的props,无副作用 function Title() { return <h ...

  3. 原型,原型链,给予原型和class的继承

    学习react的时候遇到了class方式的继承语法,原理和代码的解释很详细,值得一读. 原型每个函数(构造函数)都有一个 prototype 属性,指向该函数(构造函数)的原型对象.实例没有 prot ...

  4. Scala实践9

    1.特征 Traits用于在类之间共享接口和字段.它们类似于Java 8的接口.类和对象可以扩展特征,但是特征不能被实例化,因此没有参数. 定义一个特征 最小特征只是关键字trait和标识符: tra ...

  5. cogs 2109. [NOIP 2015] 运输计划 提高组Day2T3 树链剖分求LCA 二分答案 差分

    2109. [NOIP 2015] 运输计划 ★★★☆   输入文件:transport.in   输出文件:transport.out   简单对比时间限制:3 s   内存限制:256 MB [题 ...

  6. Spring学习记录5——数据库事务基础知识

    何为数据库事务 “一荣共荣,一损共损”这句话很能体现事务的思想,很多复杂的事务要分步进行,但它们组成了一个整体,要么整体生效,要么整体失效.这种思想反映到数据库上,就是多条SQL语句,要么全部成功,要 ...

  7. js-xlsx 一个实用的js 导出列表插件

    在前端开发过程中,导出列表功能的开发无非两种,一种是有后台生成,发生给前端下载,第二种是前端进行列表的导出工作.之前接触了一种前端导出列表的插件 tableExport.js ,但是其缺点很明显,需要 ...

  8. 1z0-062 题库解析6

    You want execution of large database operations to suspend, and then resume, in the event of space a ...

  9. python爬虫——selenium+firefox使用代理

    本文中的知识点: python selenium库安装 firefox geckodriver的下载与安装 selenium+firefox使用代理 进阶学习 搭建开发环境: selenium库 fi ...

  10. 2、Automapper安装及配置

    一. 安装 我们安装是在 vs 中使用Nuget的方式进行安装 不过安装时需注意一件事情就是,版本问题,我示例使用的是.net framework 4.5.2,所以我安装AutoMapper的版本是7 ...