求和 题解 (这题还挺阴)
2026-08-18 20:17:26
发布于:广东
10阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
int n,m;
int number[10001001];
unsigned long long ans = 0;
vector <int> color[1000100][2];
int main()
{
scanf("%d%d",&n,&m);
for(int i = 1;i <= n;i++)
{
scanf("%d",&number[i]);
}
for(int i = 1;i <= n;i++)
{
int x;
scanf("%d",&x);
color[x][i % 2].push_back(i);
//x是颜色,i % 2 是判断奇偶
//先按照颜色分组,再按照奇偶再分组
}
//写下面一大串的时候给我吓哭了,本人做题很少并且很少做STL的题
// i 和 j 是遍历
for(int i = 1;i <= m;i++)
{
for(int j = 0;j < 2;j++)
{
//k 和 l 是枚举
for(int k = 0;k < color[i][j].size();k++)
{
for(int l = k + 1;l < color[i][j].size();l++)
{
//记得一边算一边取模防溢出
unsigned long long first = (color[i][j][k] + color[i][j][l]) % 10007;
unsigned long long second = (number[color[i][j][k]] + number[color[i][j][l]]) % 10007;
ans += (first * second) % 10007;
}
}
}
}
printf("%llu",ans % 10007);
return 0;
}
这里空空如也






有帮助,赞一个