社区讨论

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 条回复,欢迎继续交流。

正在加载回复...