为什么全挂了啊
查看原帖
为什么全挂了啊
684890
Rhss楼主2022/11/6 14:04
#include <iostream>
#include <algorithm>
#include <unordered_map>
using namespace std;
const int N = 1e5+10,mod = 1e9+7;
int n;
int num[N];
int res[5000][5];
int C(int a,int b = 2){
	if(b==0||b==a) return 1;
	if(res[a][b]!=0) return res[a][b];
	return res[a][b] = (res[a-1][b]+res[a-1][b-1])%mod;
}
int main(){
	cin>>n;
	unordered_map<int,int> m;
	int ans = 0;
	int maxlen = 0;
	for(int i = 1;i<=n;++i){
		cin>>num[i];
		maxlen = max(maxlen,num[i]);
		m[num[i]]++;
	}
	//枚举每种长度
	for(int i = 1;i<=maxlen;++i){
		for(int j = i;j<=maxlen;++j){
			if(i==j){
				//i==j,总方案数等于 C(i,2)*C(i+j,2)
				ans+=(C(m[i])*C(m[i+j]))%mod;
			}
			else{
				//i!=j,总方案数等于 m[i]*m[j]*C(i+j,2)
				ans+=((m[i]*m[j])%mod*C(m[i+j]))%mod;
			}
		}
	}
	cout<<ans;
	return 0;
}
2022/11/6 14:04
加载中...