zoukankan      html  css  js  c++  java
  • 北京师范大学第十五届ACM决赛-重现赛D Disdain Chain (规律+组合数学)

    链接:https://ac.nowcoder.com/acm/contest/3/D
    来源:牛客网

    Disdain Chain
    时间限制:C/C++ 1秒,其他语言2秒
    空间限制:C/C++ 262144K,其他语言524288K
    64bit IO Format: %lld
    题目描述
    BNU ACM校队现在有n名队员,对于任意两名队员i和j,要么i鄙视j,要么j鄙视i,需要注意的是鄙视关系并不满足传递性,即使i鄙视j、j鄙视k,也并不意味着一定有i鄙视k。小Q同学认为,如果有t名不同的队员满足a_1鄙视a_2、a_2鄙视a_3、……、a_{t-1}鄙视a_t,那么这就是一条长度为t的鄙视链。显然鄙视链越长越不利于团队建设,小Q同学希望你帮他分别算一算有多少种n个人之间的鄙视关系满足最长的鄙视链的长度是1,2,3,...,n。
    输入描述:
    第一行是一个正整数T(≤ 6),表示测试数据的组数, 每组测试数据包含一行,只有一个整数n(2 ≤ n ≤ 7),表示校队的人数。
    输出描述:
    对于每组测试数据,输出n行,第i行表示最长鄙视链是i的鄙视关系的个数。
    示例1
    输入
    复制
    1
    2
    输出
    复制
    0
    2
    说明
    在队伍只有2名队员的情况下,无论谁鄙视谁,最长鄙视链的长度都是2。

    题意:

    思路:
    通过画几个样例可以发现,无论怎么画,最后得到的最长长度的鄙视链的长度都是n,而种类数我们这样计算,每两个人都有2种可能,而任意两个人有2种可能,答案数就是 2^( C( n, 2) ) ,其他长度的全为0

    细节见代码:

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #include <cmath>
    #include <queue>
    #include <stack>
    #include <map>
    #include <set>
    #include <vector>
    #include <iomanip>
    #define ALL(x) (x).begin(), (x).end()
    #define rt return
    #define sz(a) int(a.size())
    #define all(a) a.begin(), a.end()
    #define rep(i,x,n) for(int i=x;i<n;i++)
    #define repd(i,x,n) for(int i=x;i<=n;i++)
    #define pii pair<int,int>
    #define pll pair<long long ,long long>
    #define gbtb ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
    #define MS0(X) memset((X), 0, sizeof((X)))
    #define MSC0(X) memset((X), '', sizeof((X)))
    #define pb push_back
    #define mp make_pair
    #define fi first
    #define se second
    #define eps 1e-6
    #define gg(x) getInt(&x)
    #define db(x) cout<<"== [ "<<x<<" ] =="<<endl;
    using namespace std;
    typedef long long ll;
    ll gcd(ll a,ll b){return b?gcd(b,a%b):a;}
    ll lcm(ll a,ll b){return a/gcd(a,b)*b;}
    ll powmod(ll a,ll b,ll MOD){ll ans=1;while(b){if(b%2)ans=ans*a%MOD;a=a*a%MOD;b/=2;}return ans;}
    inline void getInt(int* p);
    const int maxn=1000010;
    const int inf=0x3f3f3f3f;
    /*** TEMPLATE CODE * * STARTS HERE ***/
    int t;
    int n;
    ll ans=0ll;
    int c[10][10];
    void init()
    {
    	c[1][1]=1;
    	c[1][0]=1;
    	for(int i=2;i<=9;i++)
    	{
    		c[i][0]=1;
    		c[i][i]=1;
    		for(int j=1;j<i;j++)
    		{
    			c[i][j]=c[i-1][j]+c[i-1][j-1];
    		}
    	}
    	// repd(i,1,9)
    	// {
    	// 	repd(j,1,i)
    	// 	{
    	// 		cout<<i<<" "<<j<<" "<<c[i][j]<<endl;
    	// 	}
    	// }
    }
    void dfs(int pos,int x,int rm,ll num)
    {
    	if(pos>x)
    	{
    	    if(rm==0)
                ans+=num;
    		return;
    	}
    	for(int i=1;i<=rm;i++)
    	{
    		dfs(pos+1,x,rm-i,num*c[rm][i]);
    	}
    }
    
    int main()
    {
    //    freopen("D:\code\text\input.txt","r",stdin);
    	//freopen("D:\code\text\output.txt","w",stdout);
    	gbtb;
    	init();
    	cin>>t;
    	while(t--)
    	{
    		cin>>n;
    		repd(i,1,n-1)
    		{
    		    cout<<0<<endl;
    		}
    		int num=(n*(n-1))/2;
    		cout<<(1ll<<(num))<<endl;
    	}
    
    
    
        return 0;
    }
    
    inline void getInt(int* p) {
        char ch;
        do {
            ch = getchar();
        } while (ch == ' ' || ch == '
    ');
        if (ch == '-') {
            *p = -(getchar() - '0');
            while ((ch = getchar()) >= '0' && ch <= '9') {
                *p = *p * 10 - ch + '0';
            }
        }
        else {
            *p = ch - '0';
            while ((ch = getchar()) >= '0' && ch <= '9') {
                *p = *p * 10 + ch - '0';
            }
        }
    }
    
    
    
    本博客为本人原创,如需转载,请必须声明博客的源地址。 本人博客地址为:www.cnblogs.com/qieqiemin/ 希望所写的文章对您有帮助。
  • 相关阅读:
    9、Spring Boot 2.x 集成 Thymeleaf
    【专题】Spring Boot 2.x 面试题
    8、Spring Boot 2.x 服务器部署
    7、Spring Boot 2.x 集成 Redis
    6、Spring Boot 2.x 集成 MyBatis
    5、Spring Boot 2.x 启动原理解析
    4、Spring Boot 2.x 自动配置原理
    3、Spring Boot 2.x 核心技术
    2、Spring Boot 2.x 快速入门
    centOS下安装JDK1.8.60,glassfish4.1.1以及MySQL
  • 原文地址:https://www.cnblogs.com/qieqiemin/p/11013219.html
Copyright © 2011-2022 走看看