70分WA求助!
查看原帖
70分WA求助!
1139799
A4plusgod楼主2024/1/9 14:49

后面7组大数据都过了,结果前面3组小数据没过,求求dalao相助!

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const ll N = 1e6+1,mod = 1e9+7;//debug1.注意测试范围 
ll a[N],s[N],n,i,ans,k,maxn;
int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	ll sum1=0,sum=0,n,m;
	cin>>n;//输入木棒总数 
	for(i=1;i<=n;i++){
		cin>>k;//输入当前木棒长度 
		s[k]++;//长度为k的木棒++ 
		if(k>maxn && s[k]>1) maxn = k;//可以取到两个相同的木棒长度的最大值 
	}
	for(i=1;i<=maxn/2;i++){//从长度1开始遍历 
		if(s[i]==0) break;//如果当前长度没有木棒 
		for(k=i;k<maxn;k++){//另一根木棒遍历 
			if((k==i && s[k]==1)||s[k]==0)break;//如果当前长度不足以给它一根木棒 
			if(s[i+k]>1){//当两者之和的木棒长度存在且大于等于2时 
				if(i==k) ans+=s[i+k]*(s[i+k]-1)*s[i]*(s[i]-1)/4;
				else ans+=s[i+k]*(s[i+k]-1)*s[i]*s[k]/2;
				ans%=mod;
			}
		}
	}
	cout<<ans<<endl;
	return 0;
}
2024/1/9 14:49
加载中...