别用cin
by masiyudr @ 2023-10-10 17:17:28
```cpp
#include <bits/stdc++.h>
#define int long long
using namespace std ;
const int N = 10007 ;
int n , m , u[100005] , c[100005] , ans ;
vector <int> v[100005][2] ;
signed main()
{
cin >> n >> m ;
for(int i = 1 ; i <= n ; i++)
{
scanf("%lld" , &u[i]) ;
u[i] %= N ;
}
for(int i = 1 ; i <= n ; i++) scanf("%lld" , &c[i]) ;
if(n <= 3000)
{
for(int i = 1 ; i <= n ; i++)
{
for(int j = i + 2 ; j <= n ; j += 2)
{
if(c[i] == c[j]) ans = (ans + (i + j) * (u[i] + u[j])) % N ;
}
}
printf("%lld" , ans) ;
return 0 ;
}
for(int i = 1 ; i <= n ; i++) v[c[i]][i % 2].push_back(i) ;
for(int i = 1 ; i <= m ; i++)
{
for(int j = 0 ; j < v[i][0].size() ; j++)
{
for(int k = j + 1 ; k < v[i][0].size() ; k++)
{
if(!((v[i][0][k] - v[i][0][j]) & 1)) ans = (ans + (v[i][0][j] + v[i][0][k]) * (u[v[i][0][j]] + u[v[i][0][k]])) % N ;
}
}
for(int j = 0 ; j < v[i][1].size() ; j++)
{
for(int k = j + 1 ; k < v[i][1].size() ; k++)
{
if(!((v[i][1][k] - v[i][1][j]) & 1)) ans = (ans + (v[i][1][j] + v[i][1][k]) * (u[v[i][1][j]] + u[v[i][1][k]])) % N ;
}
}
}
printf("%lld" , ans) ;
return 0 ;
}
```
@[mjb023](https://www.luogu.com.cn/user/982155)
大佬,已修改,还是TLE。
by lihongqian__int128 @ 2023-10-10 20:59:56
@[LHQ_lihongqian](/user/770891) 不是正解吧 [我的](https://www.luogu.com.cn/record/128882746)才116ms
by _8008008 @ 2023-10-12 13:08:53