取模不当爆零
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N=1e5+5;
int n,m,num[N],col[N],p=10007;
LL e[N],ans;
vector<int> a[2*N];
int main() {
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)scanf("%d",&num[i]);
for(int i=1;i<=n;i++){
scanf("%d",&col[i]);
if(i&1)col[i]+=m;
a[col[i]].push_back(i);
e[col[i]]=(e[col[i]]+num[i]);
}
for(int i=1;i<=2*m;i++){
int si=a[i].size();
for(int j=0;j<si;j++){
int aij=a[i][j];
ans+=((((si-1)%p)*num[aij]%p)*aij+((e[col[aij]]-num[aij])%p*aij)%p)%p;
}
}
printf("%d\n",ans);
return 0;
}
取模恰当AC
ans=(ans+((((si-1)%p)*num[aij]%p)*aij+((e[col[aij]]-num[aij])%p*aij)%p)%p)%p;