CSES – Forest Queries

二維前綴和

#include<bits/stdc++.h>
#define int long long
#define pii pair<int,int>
#define f first
#define s second
#define fastio ios_base::sync_with_stdio(0);cin.tie(0)
using namespace std;
//declare
const int maxn = 1005;
int n,q;
char maze[maxn][maxn];
vector<int> pre[maxn];
//
signed main(){
    fastio;
    cin>>n>>q;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            cin>>maze[i][j];
        }
    }
    for(int i=1;i<=n;i++){
        pre[i].push_back(0);
        for(int j=1;j<=n;j++){
            pre[i].push_back(pre[i].back() + (maze[i][j] == '*'));
        }
    }
    while(q--){
        int ans = 0;
        int a,b,c,d; cin>>a>>b>>c>>d;
        if(tie(a,b) > tie(c,d)) swap(a,c), swap(b,d);
        for(int i=a;i<=c;i++) ans += pre[i][d] - pre[i][b-1];
        cout<<ans<<"\n";
    }
    return 0;
}

相關文章

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *