COGS1532. [IOI2001]行動電話

來源:互聯網
上載者:User

標籤:矩陣   char   upd   etc   答案   nbsp   cell   簡單   應該   

1532. [IOI2001]行動電話

★☆   輸入檔案:mobilephones.in   輸出檔案:mobilephones.out   簡單對比
時間限制:5 s   記憶體限制:256 MB

【題目描述】

假設Tampere地區的4G移動通訊基站以如下方式運行。整個地區被劃分成若干正方形格子。這些格子構成一個S*S的矩陣,它們的行,列編號都是從0到S-1.每一個格子中都有一個基站。每個格子中啟用的手機數量可能改變,因為一部手機可能從一個格子移動到另一個格子,開啟或者關閉。有時,某一座基站會向總站報告自己的行列座標,以及該格中啟用手機數目的變化。

【輸入格式】

輸入指令編碼如下。

每個指令佔一行,包含一個指令碼和一些參數,見下表。

 

指令碼 參數 意義
0 S 初始化一個S*S的全零矩陣。這個指令只會出現一次,即第一條指令。
1 X Y A 將格子(X,Y)中啟用的手機數量增加A。A有可能是正數或負數。
2 L B R T 詢問當前所有座標(X,Y)滿足:L<=X<=R,B<=Y<=T的格子中啟用的手機數量之和。
3   結束程式。這個指令只會出現一次,即最後一條指令。

 

 

【輸出格式】

你的程式不應該對指令2外的所有指令進行回答。對於每個指令2,你的程式需要輸出一行一個正整數,即該指令的答案。

【範例輸入】

 

0 4

1 1 2 3

2 0 0 2 2

1 1 1 2

1 1 2 -1

2 1 1 2 3

3

 

【範例

 

3

4

 

【提示】

矩陣大小:1<=S<=1024

任意時刻,每個格子中的啟用手機數量V:0<=V<=32767

格子中啟用手機數量的變化值:-32768<=A<=32767

輸入的指令數目:3<=U<=60002

整個矩陣中的最大手機數量:M=2^30

【來源】

IOI 2001

 

二維BIT維護區間和

#include<cstdio>const int N=3005;int opt,n,c[N][N];int read(){    int x=0,f=1;char ch=getchar();    while(ch<‘0‘||ch>‘9‘){if(ch==‘-‘)f=-1;ch=getchar();}    while(ch>=‘0‘&&ch<=‘9‘){x=x*10+ch-‘0‘;ch=getchar();}    return x*f;}int lowbit(int x){    return x&-x;}void updata(int x,int y,int val){    for(int i=x;i<=n;i+=lowbit(i)){        for(int j=y;j<=n;j+=lowbit(j)){            c[i][j]+=val;        }     }}int query(int x,int y){    int res=0;    for(int i=x;i>=1;i-=lowbit(i)){        for(int j=y;j>=1;j-=lowbit(j)){            res+=c[i][j];        }     }    return res;}int main(){    freopen("mobilephones.in","r",stdin);    freopen("mobilephones.out","w",stdout);    opt=read();n=read();    for(int x1,x2,y1,y2,val;(opt=read())!=3;){        if(opt==1){            x1=read();y1=read();val=read();x1++;y1++;            updata(x1,y1,val);        }        else{            x1=read();y1=read();x1++;y1++;            x2=read();y2=read();x2++;y2++;            printf("%d\n",query(x2,y2)-query(x2,y1-1)-query(x1-1,y2)+query(x1-1,y1-1));        }    }    return 0;} 

 

COGS1532. [IOI2001]行動電話

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.