样例过但0分求助,没有超时
查看原帖
样例过但0分求助,没有超时
1125847
fengqyb楼主2024/3/10 19:17
#include<bits/stdc++.h>  
using namespace std;  
const int N=1e5+5;  
const int mod=10007;  
typedef long long ll;  
  
int n,m,w[N],c[N];  
map<int,vector<int>> d1,d2;  
set<int> v1,v2;  
  
signed main(){  
    cin>>n>>m;  
    for(int i=1;i<=n;i++){  
        cin>>w[i];  
    }  
    for(int i=1;i<=n;i++){  
        cin>>c[i];  
        if(i%2==0){  
            d2[c[i]].push_back(i);  
            v2.insert(c[i]);  
        }  
        else{  
            d1[c[i]].push_back(i);  
            v1.insert(c[i]);  
        }  
    }  
    int ans=0;  
    for(int c:v1){  
        if(d1[c].size()<=1)continue;  
        int sum=0;  
        int pl=d1[c].size()-2;  
        for(int j:d1[c]){  
            sum+=j;  
            // cout<<j<<" ";  
        }  
        for(int j:d1[c]){  
            ans+=w[j]*(sum+pl*j)%mod;  
        }  
    }  
    for(int c:v2){  
        if(d2[c].size()<=1)continue;  
        int sum=0;  
        int pl=d2[c].size()-2;  
        for(int j:d2[c]){  
            sum+=j;  
            // cout<<j<<" ";  
        }  
        for(int j:d2[c]){  
            ans+=w[j]*(sum+pl*j)%mod;  
        }  
    }  
    cout<<ans;  
}
2024/3/10 19:17
加载中...