不超时爆零求调
查看原帖
不超时爆零求调
740329
sunaohua楼主2022/8/14 17:48
#include<bits/stdc++.h>
using namespace std;
int s1[50100],s2[50100];
int num1[50100],num2[50100];
int dp1[50100];
int dp2[50100];
int b1[100100];
int b2[100100];
int main() 
{
	int n,m;
	cin>>n>>m;
	long long ans=0;
	for(int i=1;i<=n/2;i++)
	scanf("%d%d",&num1[i],&num2[i]);	
	for(int i=1;i<=ceil(n*1.0/2);i++)
	scanf("%d%d",&s1[i],&s2[i]);
	for(int i=1;i<=n;i++)
	{
		dp1[i]=dp1[b1[s1[i]]]+i+b1[s1[i]];
		if(b1[s1[i]]!=0)
		ans=(ans+dp1[i]*(num1[i]+num1[b1[s1[i]]]))%10007;
		b1[s1[i]]=i;
	}
	for(int i=1;i<=n;i++)
	{
		dp2[i]=dp2[b2[s2[i]]]+i+b2[s2[i]];
		if(b2[s2[i]]!=0)
		ans=(ans+dp2[i]*(num2[i]+num2[b2[s2[i]]]))%10007;
		b2[s2[i]]=i;
	}
	cout<<ans;
	return 0;
}


2022/8/14 17:48
加载中...