社区讨论
80Pets,6,7不过,大佬求调
P2671[NOIP 2015 普及组] 求和参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mhjctgon
- 此快照首次捕获于
- 2025/11/04 00:28 4 个月前
- 此快照最后确认于
- 2025/11/04 00:28 4 个月前
CPP
#include <bits/stdc++.h>
using namespace std;
long long n,m,num[100005],col[100005],vis0[100005],vis1[100005],vis2[100005];
long long sum,nq1[100005],cq1[100005],ncq1[100005];
long long nq2[100005],cq2[100005],ncq2[100005];
const int N=10007;
int main(){
cin >> n >> m;
for(int i=1;i<=n;i++){
cin >> num[i];
}
for(int i=1;i<=n;i++){
cin >> col[i];
}
for(int i=1;i<=m;i++){
int k1=0,k2=0;
for(int j=1;j<=n;j++){
if(vis0[j]){
continue;
}
if(col[j]==i){
if(j%2==1){
vis1[++k1]=j;
nq1[k1]=nq1[k1-1]+num[j];
cq1[k1]=cq1[k1-1]+j;
ncq1[k1]=ncq1[k1-1]+num[j]*j;
}else{
vis2[++k2]=j;
nq2[k2]=nq2[k2-1]+num[j];
cq2[k2]=cq2[k2-1]+j;
ncq2[k2]=ncq2[k2-1]+num[j]*j;
}
vis0[j]=1;
}
}
for(int p=2;p<=k1;p++){
sum+=ncq1[p]+vis1[p]*nq1[p]%N+num[vis1[p]]*cq1[p]%N-(4-p)*num[vis1[p]]*vis1[p]%N;
}
for(int p=2;p<=k2;p++){
sum+=ncq2[p]+vis2[p]*nq2[p]%N+num[vis2[p]]*cq2[p]%N-(4-p)*num[vis2[p]]*vis2[p]%N;
}
}
cout << sum%N;
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...