玄学问题求助!为啥换一种形式写就会错?!
查看原帖
玄学问题求助!为啥换一种形式写就会错?!
494699
卷王慢即快楼主2022/9/3 14:53

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;
}
2022/9/3 14:53
加载中...