我是靠谱客的博主 可耐大碗,最近开发中收集的这篇文章主要介绍hdu/hdoj 1166 敌兵布阵,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

使用线段树或者树状数组


#include <iostream>
#include <stdio.h>
using namespace std;
const int MAX = 50000;
#define lowbit(x) ((x)&(-x))
int com[ MAX + 1 ],N,T;
void modify ( int pos, int val ){
while ( pos <= N ){
com[pos] += val;
pos = pos + lowbit(pos);
}
}
int quy ( int x ){
int sum = 0;
while ( x > 0 ){
sum = sum + com[x];
x = x - lowbit(x);
}
return sum;
}
int main ()
{
while ( scanf ( "%d",&T ) != EOF ){
int ca = 1,x,y;
while ( T -- ){
printf ( "Case %d:n",ca++ );
scanf ( "%d",&N );
for ( int i = 0; i <= N; ++ i ) com[i] = 0;
for ( int i = 1; i <= N; ++ i ){
scanf ( "%d",&x );
modify ( i, x );
}
char ask[10];
while ( scanf ( "%s",ask ), ask[0] != 'E' ){
scanf ( "%d%d",&x,&y );
switch ( ask[0] ){
case 'A': modify ( x, y ); break;
case 'S': modify ( x, -y ); break;
case 'Q': printf ( "%dn",quy ( y ) - quy ( x-1 ) ); break;
}
}
}
}
return 0;
}



最后

以上就是可耐大碗为你收集整理的hdu/hdoj 1166 敌兵布阵的全部内容,希望文章能够帮你解决hdu/hdoj 1166 敌兵布阵所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部