• 「CF1433E」Two Round Dances


    • 前言

      upt2020/10/23:修改了一个笔误。感谢 @vectorwyx

      手玩那个逆时针顺时针半天,以为是圆排列+镜面,结果突然来消息改题了(雾)。


    • 分析

      (n) 个人可以分成 (2) 组,且组别没有任何区别。

      假设先单看组合,那分成两组的数量就是 (dfrac{1}{2} imes C_n^ frac{n}{2})

      现在看单个组。

      一个组可以通过转圈圈来改变不同的阵容,写的很清楚了,就是圆排列。

      因为 (n) 的圆排列为 ((n-1)!) 。然后这里又有 (2) 组。

      所以答案为 (dfrac{1}{2} imes C_n^ frac{n}{2} imes ((dfrac{n}{2}-1)!)^2)

      因为数据较小 (n le 20) ,所以开头阶乘直接预处理即可。

      复杂度 (O(n))


    • 代码
    #include<iostream>
    #include<cstdio>
    #include<cmath>
    #include<cstring>
    using namespace std;
    typedef long long ll;
    const ll Maxn=20+5;
    ll n,mul[Maxn];
    int main()
    {	scanf("%lld",&n);
    	mul[0]=1;
    	for(ll i=1;i<=n;i++)mul[i]=1ll*mul[i-1]*i;
    	printf("%lld
    ",mul[n]/mul[n/2]/mul[n/2]/2*mul[n/2-1]*mul[n/2-1]);
    	return 0;
    }
    
  • 相关阅读:
    alpha冲刺9
    alpha冲刺8
    alpha冲刺7
    alpha冲刺6
    团队作业——随堂小测(同学录)
    alpha冲刺5
    【麻瓜制造者】团队项目测试报告与用户反馈
    Android基础学习
    学习博客之工具的学习、安装和使用
    学习博客之Java继承多态接口
  • 原文地址:https://www.cnblogs.com/Rainy7/p/cf1433e-solution.html
Copyright © 2020-2023  润新知