厌风风不定,风起花萧索。(前缀和 map

添加链接描述
用map存储每个字符串标记然后用二维数组求前缀和

#include<bits/stdc++.h>
using namespace std;
#define int long long 
typedef long long ll;
const int N=15,M=1e3+9;
string ch;
typedef pair<string,ll> pii;
int sum[M][M];
map<string,int> mp;
int cnt;
signed main(){
     std::ios::sync_with_stdio(false);
    cin.tie(NULL);
    int n;
   cin>>n;
    for(int i=1;i<=n;i++){
      ll x;
      cin>>ch>>x;
     if(!mp.count(ch))
      mp[ch]=++cnt;
      int tmp=0;
      for(int j=1;j<=cnt;j++){
        
        if(j==mp[ch])sum[i][j]=sum[i-1][j]+x;
        else {
           sum[i][j]=sum[i-1][j];
        }
       // cout<<sum[it.first][i]<<endl;
      }
    }
   
    int q;
    cin>>q;
    while(q--){
      int l,r;
      cin>>l>>r>>ch;
      //cout<<ch<<endl;
    //cout<<sum["xyy"][r]<<endl;
      printf("%lld\n",sum[r][mp[ch]]-sum[l-1][mp[ch]]);
    }
   

    return 0;
}
上一篇:js中最实用的数组去重方法


下一篇:P1047 校门外的树 题解