【ds】HDU_1166
生活随笔
收集整理的這篇文章主要介紹了
【ds】HDU_1166
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
樹狀數組 View Code #include<stdio.h>
#include<string.h>
#define lowbit( x ) ( x )&( -x )
int tree[50024],num,n;
void plus( int num,int x )
{
while( x <= n )
{
tree[x] += num;
x += lowbit( x );
}
}
int sum( int x )
{
int sum = 0;
while( x )
{
sum += tree[x];
x -= lowbit( x );
}
return sum;
}
int main( )
{
int t;
char str[100];
scanf( "%d",&t );
int k = t;
while( k-- )
{
memset( tree,0,sizeof( tree ) );
scanf( "%d",&n );
for( int i = 1; i <= n; ++i )
{
scanf( "%d",&num );
plus( num,i ); //第i個增加了NUM人
}
int r = 1;
while( scanf( "%s",str ),str[0] != 'E' )
{
int a,b;
scanf( "%d%d",&a,&b );
switch( str[0] )
{
case 'A':
plus( b,a );
break;
case 'S':
plus( -b,a );
break;
case 'Q':
if( r )
printf( "Case %d:\n",t - k );
r = 0;
printf("%d\n",sum( b ) - sum( a - 1 ));
break;
}
}
}
return 0;
}
#include<string.h>
#define lowbit( x ) ( x )&( -x )
int tree[50024],num,n;
void plus( int num,int x )
{
while( x <= n )
{
tree[x] += num;
x += lowbit( x );
}
}
int sum( int x )
{
int sum = 0;
while( x )
{
sum += tree[x];
x -= lowbit( x );
}
return sum;
}
int main( )
{
int t;
char str[100];
scanf( "%d",&t );
int k = t;
while( k-- )
{
memset( tree,0,sizeof( tree ) );
scanf( "%d",&n );
for( int i = 1; i <= n; ++i )
{
scanf( "%d",&num );
plus( num,i ); //第i個增加了NUM人
}
int r = 1;
while( scanf( "%s",str ),str[0] != 'E' )
{
int a,b;
scanf( "%d%d",&a,&b );
switch( str[0] )
{
case 'A':
plus( b,a );
break;
case 'S':
plus( -b,a );
break;
case 'Q':
if( r )
printf( "Case %d:\n",t - k );
r = 0;
printf("%d\n",sum( b ) - sum( a - 1 ));
break;
}
}
}
return 0;
}
轉載于:https://www.cnblogs.com/zuckerTT/archive/2011/09/24/2189804.html
總結
以上是生活随笔為你收集整理的【ds】HDU_1166的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SQL注入语法类型——报错注入
- 下一篇: win10安装kafka