hdu1166-敌兵布阵-分块
把区间分成√n份降低复杂度.
#include<bits/stdc++.h>
#define inf 0x3f3f3f3f
const int maxn=;
const int seg=;
using namespace std;
int t,n,icase,x,y;
char order[maxn/+];
int a[maxn+];
int sum[maxn+];
void Add(int x,int y){
a[x]+=y;
sum[x/seg+]+=y;
}
int query(int l,int r){
int res=;
int L=l/seg+,R=r/seg+;
if(L==R||R==L+){
for(int i=l;i<=r;i++){
res+=a[i];
}
} else {
for(int i=l;i<=L*seg-;i++){
res+=a[i];
}
for(int i=r;i>=(R-)*seg;i--){
res+=a[i];
}
for(int i=L+;i<=R-;i++){
res+=sum[i];
}
}
return res;
}
void solve(){
scanf("%d",&n);
for(int i=;i<n;i++){
scanf("%d",&a[i]);
}
for(int i=;i<n;i++){
sum[i/seg+]+=a[i];
}
printf("Case %d:\n",++icase);
while(scanf("%s",order)!=EOF){
if(order[]=='E'){
break;
} else if(order[]=='A'){
scanf("%d%d",&x,&y);
x--;
Add(x,y);
} else if(order[]=='S'){
scanf("%d%d",&x,&y);
x--;
Add(x,-y);
}
else if(order[]=='Q'){
scanf("%d%d",&x,&y);
x--,y--;
int ans=query(x,y);
printf("%d\n",ans);
}
}
}
void init(){
memset(a,,sizeof(a));
memset(sum,,sizeof(sum));
}
int main()
{
scanf("%d",&t);
while(t--){
init();
solve();
}
return ;
}
hdu1166-敌兵布阵-分块的更多相关文章
- hdu1166敌兵布阵
敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- hdu1166 敌兵布阵
敌兵布阵 C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动 ...
- 线段树 HDU-1166 敌兵布阵
敌兵布阵是一个线段树典题,题目如下(点此查看题目出处): Problem Description C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国 ...
- HDU-1166敌兵布阵(线段树)
敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submissi ...
- hdu1166 敌兵布阵(线段树 求区间和 更新点)
敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- HDU1166 敌兵布阵_线段树
敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- 线段树 - HDU1166 - 敌兵布阵
2017-07-29 16:41:00 writer:pprp 线段树跟区间操作相关,想要在题目限定的时间内解决问题就需要用线段树这种数据结构来解决: 线段树是一种二叉平衡树 参考书目:张新华的< ...
- 线段树——hdu1166敌兵布阵
一.题目回顾 题目链接:敌兵布阵 Problem Description C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个 ...
- HDU1166 敌兵布阵(树状数组实现
敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- hdu1166 敌兵布阵 线段树(区间更新)
敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
随机推荐
- POSTGRESQL 导入导出
安装postgresql yum install postgresql postgresql-server mysql占用端口3306 pgsql是5432 2 导入整个数据库 psql -U pos ...
- npm-install camo
camo是针对Node.js和MongoDB的对象模型mapper(object document mapper)(ODM) 可以喝Mongoose ODM互换,但是和其有显著的不同 文章主要关注了M ...
- 动态创建TeeChart的简便方法
最近在项目中使用Teechart ocx版本替换了labview的老版本控件,显示效果和效率均有提高,但是却遇到多线程下报access violation的问题. 翻遍大小论坛,最后在官网论坛找到相同 ...
- codeforces 609D D. Gadgets for dollars and pounds(二分+贪心)
题目链接: D. Gadgets for dollars and pounds time limit per test 2 seconds memory limit per test 256 mega ...
- poj1179多边形——区间DP
题目:http://poj.org/problem?id=1179 区间DP,值得注意的是有负值,而且有乘法,因此可能会影响最大值: 注意memset中写-1仅仅是-1,-2才是一个很小的负数: 最后 ...
- bzoj1853幸运数字——容斥原理
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1853 dfs实现容斥原理即可. 注意:若在init中写“cnt++”,则出来后需要先cnt-- ...
- css3 实现运动动画 圆与椭圆
圆: html <div class="demo4"><div></div></div> css .demo4{ width: 20 ...
- JAVA基础知识 String s = new String("ABC") VS String s = "abc"
一: String s = new String("ABC") VS String s = "abc" String s = "abc&q ...
- java 通过System.getProperties()获取系统参数
转自:https://www.cnblogs.com/ksuifeng/archive/2010/09/25/1834416.html 1.java的System.getProperty()方法可以获 ...
- 连接带密码的access数据库
在网上找了很多都不靠谱,稀里哗啦的弄一堆连接字符串,很不优雅. 这个方法很简单: 1.在“连接”这页中,下方有“输入登录数据库的信息”用户名:admin,并在下面选择“空白密码” 2.在“所有”这页的 ...