AC代码:
#include<bits/stdc++.h>
using namespace std;
#define mod 10007
int n,m,ans=0;
int a[100001],b[100001];
int s1[100001][2],s2[100001][2];
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];
s1[b[i]][i%2]++;
s2[b[i]][i%2]=(s2[b[i]][i%2]+a[i])%mod;
}
for(int i=1;i<=n;i++)
{
int y=b[i];
ans=(ans+(i*(s2[y][i%2]+a[i]*(s1[y][i%2]-2)%mod)%mod)%mod)%mod;
}
cout<<ans;
return 0;
}
WA50分代码:
#include<bits/stdc++.h>
using namespace std;
#define mod 10007
int n,m,ans=0;
int a[100001],b[100001];
int s1[100001][2],s2[100001][2];
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];
s1[b[i]][i%2]++;
s2[b[i]][i%2]=(s2[b[i]][i%2]+a[i])%mod;
}
for(int i=1;i<=n;i++)
{
int y=b[i];
ans=(ans+(i*((s2[y][i%2]-a[i])%mod+a[i]*(s1[y][i%2]-1)%mod)%mod)%mod)%mod; //修改的地方在这,-2变成-1,然后把a[i]放到s2[y][i%2]后面。
}
cout<<ans;
return 0;
}