我一开始的代码是40pts:
#include <iostream>
#include <cmath>
#include <algorithm>
#define mod 10007
using namespace std;
int n,m;
long long sum[100005][2][4],ans;
int a[100005],b[100005];
// 0指sigma id,1指sigma number,2指sigma number * id,3指sigma sum
int main()
{
cin >> n >> m;
for(int i = 1 ; i <= n ; ++i){
cin >> a[i];
}
for(int i = 1 ; i <= n ; ++i){
cin >> b[i];
sum[b[i]][i % 2][0] += i % mod;
sum[b[i]][i % 2][3]++;
sum[b[i]][i % 2][1] += a[i] % mod;
sum[b[i]][i % 2][2] += i * a[i] % mod;
}
for(int i = 1 ; i <= m ; ++i){
ans += sum[i][0][0] * sum[i][0][1] % mod + (sum[i][0][3] - 2) % mod * sum[i][0][2] % mod;
ans += sum[i][1][0] * sum[i][1][1] % mod + (sum[i][1][3] - 2) % mod * sum[i][1][2] % mod;
}
cout << ans % mod << endl;
return 0;
}
找了半天错实在没看出哪儿错,然后将存放颜色和数字的数组改成long long类型就过了,但是本蒟蒻不理解的地方是int也没有超过题目要求的数据范围啊? 有没有好心的大佬能解释一下qwq