9pts求调
查看原帖
9pts求调
776799
GODTREE楼主2025/8/29 21:22
#include <bits/stdc++.h>
using namespace std;
namespace zxy{
    const int N=1e5+5;
    int n,a[N][7],k,tmp[7],f[7],g[7],C[15][15];
    unsigned long long base[7]={100003,100019,100043,100049,100057,100069};
    unsigned long long hah(int x,int u){return base[u]*(unsigned long long)(x);}
    void dfs(int u){
        for (int i=tmp[u]+1;i<=6;i++){
            tmp[u+1]=i;dfs(u+1);
        }
        map<unsigned long long,int> mp;
        for (int i=1;i<=n;i++){
            unsigned long long sum=0;
            for (int j=1;j<=u;j++){
                sum+=hah(a[i][tmp[j]],u);
            }
            mp[sum]++;
        }
        for(auto &x:mp){
            if (x.second>1){
                f[u]+=x.second;
            }
        }
    }
    int main(){
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
            for (int j=1;j<=6;j++)
                scanf("%d",&a[i][j]);
        dfs(0);
        C[0][0]=1;
        for (int i=1;i<=14;i++){
           C[i][0]=1; 
            for (int j=1;j<=i;j++) C[i][j]=C[i-1][j]+C[i-1][j-1];
        }
        for(int i=1;i<=6;i++){
            for (int j=0;j<=i;j++){
                if ((i-j)%2==1){
                    g[i]-=C[j][i]*f[j];
                }
                else{
                    g[i]+=C[i][j]*f[j];
                }
            }
        }
        printf("%d",g[k]);
        return 0;
    }
}
int main(){
    zxy::main();
    return 0;
}
2025/8/29 21:22
加载中...