代码厌氧?
查看原帖
代码厌氧?
1014544
supernoobbb楼主2024/5/6 19:49
#include<bits/stdc++.h>
using namespace std;
using ll=long long;
const int mx=2e5+3;
const ll MOD=1000000007;
ll state[5003],res[5003];
int C[5003][5003];
inline void solve()
{
    int n;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        int d;
        cin>>d;
        state[d]++;
    }

    for(int j=1;j<=5000;j++){
        C[0][j]=1,C[j][j]=1;
        for(int i=1;i<j;i++){
            C[i][j]=(C[i][j-1]%MOD+C[i-1][j-1]%MOD)%MOD;
        }
    }

    for(int i=1;i<=5000;i++){
        if(state[i]>=2&&2*i<=5000){
            res[2*i]+=((ll)C[2][state[i]]%MOD);
            res[2*i]%=MOD;
        }
        for(int p=i+1;p<=5000;p++)
        {
            if(state[i]&&state[p]){
                res[i+p]+=((state[i]%MOD)*(state[p]%MOD))%MOD;
                res[i+p]%=MOD;
            }
        }
    }

    int  ans=0;
    for(int i=1;i<=5000;i++)
    {
        if(state[i]>=2)ans+=((res[i]%MOD)*(((ll)C[2][state[i]])%MOD))%MOD;
        ans%=MOD;
    }
    cout<<ans;
}
int main()
{
	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	solve();
	return 0;
}

#4本地跑和洛谷机子完全不一样

2024/5/6 19:49
加载中...