[POJ 1195] Mobile phones · 树状数组

来源:互联网 发布:js解析xml文件的作用 编辑:程序博客网 时间:2024/06/15 06:23
二维树状数组模板,不过注意要用读入优化。
#include <stdio.h>#include <algorithm>#include <string.h>using namespace std;#define lowbit( x ) (( x ) & ( -x ))const int N = 1025 ;int n,f[N][N],x1,y1,x2,y2,c,p;void edit( int x , int y , int c ) {for (int i = x ; i <= n ; i += lowbit(i) )for (int j = y ; j <= n ; j += lowbit(j) )f[i][j] += c ;return ;}int sum( int x , int y ) {int ans = 0 ;for (int i = x ; i ; i -= lowbit( i ) )for (int j = y ; j ; j -= lowbit( j ) )ans += f[i][j] ;return ans ;}int get() {int p = 0 , t = 1 ; char x = getchar() ;while ( x < '0' || x > '9' ) {if ( x == '-' ) t = -1 ;x = getchar() ;}while ( x >= '0' && x <= '9' )p = p * 10 + x - '0' ,x = getchar() ;return p * t ;}int main() {getchar() ; n = get() ;p = get() ;while ( p != 3 ) {if ( p == 1 ) {x1 = get() ; y1 = get() ; c = get() ;x1 ++ ; y1 ++ ;edit( x1 , y1 , c ) ;}else {x1 = get() ; y1 = get() ; x2 = get() ; y2 = get() ;x1 ++ ; y1 ++ ; x2 ++ ; y2 ++ ;printf("%d\n" , sum( x2 , y2 ) + sum ( x1 - 1 , y1 - 1 ) - sum( x2 , y1 - 1 ) - sum( x1 - 1 , y2 ) );}p = get() ;}return 0;}

0 0