###### tags: `MDCPP題目題解` # 文化炸彈 ## 題敘 在遊戲<<文明帝國6>>中,有一個叫文化炸彈的效果 他的效果是可以把周圍的地塊變成自己城市下的領地 不過這種效果有個限制,就是當遇到奇觀或是特色區域時,將沒辦法將其變成麾下的領地 今天我們的紅鬍子巴巴羅薩--腓特烈大帝,使用這個特殊效果來征服敵國 而在敵國的每一塊領地上都有它的加成設施、資源產出等等 紅鬍子巴巴羅薩把敵國的每一塊領地標註上他評估的價值,並繪製了一張圖給你 其中上面奇觀及特色區域的位置將以0標示 接著給你他要丟下的文化炸彈位置告訴你 希望你可以幫忙計算他總共能獲得多少價值的領地 文化炸彈影響範例 1 4 5 6 8 2 0 4 1 2 3 4 7 6 8 如果丟在(3,2)的位置,將會影響 4 5 6 0 4 1 4 7 6 可以獲得4+5+6+4+1+4+7+6 = 37的分數 註: 炸完之後變成自己的領地,再炸一次就不會獲得價值了  ## 輸入說明 第一行有兩個數字$N,M$,代表敵人領地的寬、長 接下來NN行,每行有$M$個數字$S$ 其代表每一塊地的價值 接著有一個數字$Q$,代表丟文化炸彈的次數 接下來$Q$行,每行有$A,B$兩個數字,代表座標$(A,B)$ 測資範圍 $1<=N,M<=1000$ $1<=S<=100$ $1<=Q<=1000000$ ## 輸出說明 請將佔得的領地價值計算輸出 ## 範例測資 input 1 ``` 3 5 1 4 5 6 8 2 0 4 1 2 3 4 7 6 8 1 2 3 ``` output 1 ``` 37 ``` input 2 ``` 5 5 0 2 3 4 5 1 0 3 4 5 1 2 0 4 5 1 2 3 0 5 1 2 3 4 0 3 2 1 3 2 4 3 ``` output 2 ``` 28 ``` # 題解 ```cpp= #include<bits/stdc++.h> using namespace std; int arr[1050][1050]; signed main(){ //freopen("5.in","r",stdin); //freopen("5.out","w",stdout); int n,m; cin>>n>>m; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++){ cin>>arr[i][j]; } int q; cin>>q; int ans=0; for(int i=1;i<=q;i++){ int a,b; cin>>a>>b; for(int j=a-1;j<=a+1;j++) for(int k=b-1;k<=b+1;k++){ if(j>=1&&k>=1){ if(arr[j][k]!=0) ans+=arr[j][k],arr[j][k]=0; } } } cout<<ans<<endl; } ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up