【40分WA】求助
查看原帖
【40分WA】求助
485403
wanghaoyu0924楼主2023/5/14 20:41

我觉得我公式是没有推错的。提交结果是这个。

#include <bits/stdc++.h>
using namespace std;

#define MAXM 100005
#define MAXN 100005
#define Mod 10007

int N, M;
int nums[MAXN] = {0}; // 记录数字

long long cnt[MAXM][2] = {0}; // 每个颜色有几个
long long sum1[MAXM][2] = {0}; // \sum x_m * y_m
long long sum2[MAXM][2] = {0}; // \sum x_m
long long sum3[MAXM][2] = {0}; // \sum y_m
long long sum = 0;


int main(){
    cin>>N>>M;
    int tmp;
    int j;
    for(int i = 1; i <= N; i++){
        cin>>nums[i];
    }
    for(int i = 1; i <= N; i++){
        cin>>j;
        cnt[j][i%2]++;
        sum1[j][i%2] = (i * nums[i] + sum1[j][i%2]) % Mod;
        sum2[j][i%2] = (i + sum2[j][i%2]) % Mod;
        sum3[j][i%2] = (nums[i] + sum3[j][i%2]) % Mod;
    }
    for(int j = 1; j <= M; j++){
        for(int k = 0; k <= 1; k++){
            if(cnt[j][k] >= 2){
                sum = (sum + (cnt[j][k] - 2) * sum1[j][k]) % Mod;
                sum = (sum + sum2[j][k] * sum3[j][k]) % Mod;
            }
        }
    }
    cout<<sum;
    return 0;
}
2023/5/14 20:41
加载中...