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 ...
随机推荐
- laravel基础课程---7、文件处理、闪存、cookie(cookie原理和使用场景)
laravel基础课程---7.文件处理.闪存.cookie(cookie原理和使用场景) 一.总结 一句话总结: 页面请求服务器的时候是把这个页面中所有的cookie都带上了的,cookie里面也存 ...
- codeforces 558A A. Lala Land and Apple Trees(水题)
题目链接: A. Lala Land and Apple Trees time limit per test 1 second memory limit per test 256 megabytes ...
- PG替换字段中的回车与换行
REPLACE(filed, CHR(10), '') //替换换行符 REPLACE(filed, CHR(13), '') //替换回车符
- intent实现Activity之间跳转的各种传值
一.在Activity之间传递String类型的数据 传递 @Override public void onClick(View v) { String num1 = firstNum.getText ...
- Qt属性系统(Qt Property System)
Qt提供了巧妙的属性系统,它与某些编译器支持的属性系统相似.然而,作为平台和编译器无关的库,Qt不能够依赖于那些非标准的编译器特性,比如__property 或者 [property].Qt的解决方案 ...
- C++ STL std::wstring_convert处理UTF8
#include <iostream> #include <string> #include <locale> #include <codecvt> # ...
- ssh免密脚本
#!/bin/sh if [ "$1"x = ""x ]; then echo "usage:/opt/bin/auto-ssh.sh user se ...
- ContextMenu的自定义
1.针对整个ContextMenu, 自定义一个Style,去掉竖分割线 <Style x:Key="DataGridColumnsHeaderContextMenuSty ...
- java性能调优的11个建议
1.在必要之前,先不要优化 2.使用分析器来找到真正的瓶颈 3 .为整个应用程序创建性能测试套件 4.首先解决最大的瓶颈问题 5.使用StringBuilder以编程方式连接字符串 Str ...
- java面试题汇总(1)
1)Java 中能创建 volatile 数组吗? 能,Java 中可以创建 volatile 类型数组,不过只是一个指向数组的引用,而不是整个数组.我的意思是,如果改变引用指向的数组, 将会受到 v ...