wa40求调
查看原帖
wa40求调
690243
houluyu楼主2024/11/18 18:40
#include<bits/stdc++.h>
#define int __int128
#define ll __int128
using namespace std;

const int N = 100005, p = 10007;
long long n, m;
ll xnx[2][N], x[2][N], nx[2][N];
ll ans;
long long num[N], c[N];
ll cnt[2][N];


signed main()
{
	cin >> n >> m;
	for(int i = 1; i <= n; i ++)
	{
		cin >> num[i];
		num[i] %= p;
	}
	for(int i = 1; i <= n; i ++)
	{
		cin >> c[i];
	}
	int t;
	for(int i = 1; i <= n; i ++)
	{
		t = ans;
		if(i % 2 == 0)//偶数位上
		{
			if(i > 2 && xnx[0][c[i]])
			{
				ans = ((((ans + xnx[0][c[i]]) % p + x[0][c[i]] * num[i] % p) % p) % p + (nx[0][c[i]] % p * i % p) % p + i % p * num[i] % p * cnt[0][c[i]] % p) % p;
			}
			xnx[0][c[i]] = (xnx[0][c[i]] + i % p * num[i] % p) % p;
			x[0][c[i]] = (x[0][c[i]] + i) % p;
			nx[0][c[i]] = (nx[0][c[i]] + num[i]) % p;
			cnt[0][c[i]] ++;cnt[0][c[i]] %= p;
		}
		else
		{
			if(i > 2 && xnx[1][c[i]])
			{
				ans = ((((ans + xnx[1][c[i]]) % p + x[1][c[i]] * num[i] % p) % p) % p+ (nx[1][c[i]] % p * i % p) % p + i % p * num[i] % p * cnt[1][c[i]] % p) % p;
			}
			xnx[1][c[i]] = (xnx[1][c[i]] + i % p * num[i] % p) % p;
			x[1][c[i]] = (x[1][c[i]] + i) % p;
			nx[1][c[i]] = (nx[1][c[i]] + num[i]) % p;
			cnt[1][c[i]] ++;cnt[1][c[i]] %= p;
		}
//		cout << ans - t << endl;
	}
	long long res = ans % p;
	cout << res;
	return 0;


}
2024/11/18 18:40
加载中...