zoukankan      html  css  js  c++  java
  • 「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;
    }
    
  • 相关阅读:
    九度-题目1197:奇偶校验
    九度-题目1073:杨辉三角形
    九度-题目1072:有多少不同的面值组合?
    同步异步,阻塞非阻塞
    注解方式配置bean
    监听器
    自定义系统初始化器
    构建流
    数值流
    流的使用
  • 原文地址:https://www.cnblogs.com/Rainy7/p/cf1433e-solution.html
Copyright © 2011-2022 走看看