二次元ツリー配列(区間修正、シングルポイントクエリ) 1986 ワード テーマリンク:http://poj.org/problem?id=2155 何次元でも一次元の原理と同じです。一つの次元が多くなれば、もう一つのループが多くなります。 #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; #define REW(a,b) memset(a,b,sizeof(a)) #define inf int(0x3f3f3f3f) #define mod int(1e9+7) #define P pair #define pi acos(-1) inline int read() { int X=0,w=0; char ch=0; while(!isdigit(ch)) {w|=ch=='-';ch=getchar();} while(isdigit(ch)) X=(X<<3)+(X<<1)+(ch^48),ch=getchar(); return w?-X:X; } int n,m,a[1008][1008]; int sum(int x,int y) { int s=0; while(x>0) { int yy=y; while(yy>0) { s+=a[x][yy]; yy-=yy&-yy; } x-=x&-x; } return s; } void add(int x,int z,int y) { while(x<=n) { int zz=z; while(zz<=n) { a[x][zz]+=y; zz+=zz&-zz; } x+=x&-x; } return; } int main() { ios::sync_with_stdio(false); cin.tie(0); int t; cin>>t; while(t--) { cin>>n>>m; REW(a,0); int e=n; while(m--) { string b; int q,w,e,r; cin>>b; if(b=="C") { cin>>q>>w>>e>>r; add(q,w,1); add(q,r+1,-1); add(e+1,w,-1); add(e+1,r+1,1); } else { cin>>q>>w; cout< Javaマルチスレッド-Thread.interrupt()は何を意味しますか? Java反射アプリケーション-オブジェクトを巡回する属性と値