我们查看更一般的情况,设人数为m

则n < m * 2无解

然后n为奇数的情况:

我们把一个人和一个空格打包,于是剩下m个"人"和n - m个空格,随便排列这些"人",然后把空格插入

本质不同的"人"的圆周排列有(m - 1)!个,对于每个排列,有m个位置插入n - m个空格,有C(n - m - 1, m - 1)中方法,然后对于一个排列,圆周排列有n个

ans = C(n - m - 1, m - 1) * (m - 1)! * n

最后是n为奇数的情况:

我们把相对的两个点打包,然后就变成一个长度为n / 2的圈

等价于n / 2中选m个,一个有k段连续的1的方案对应原来的2k种方案

于是ans = n / 2 * (m - 1)! * Σ (2k * C(n / 2 - m - 1, k - 1) * C(m, k)) (其中1 ≤ k ≤ m)

然后题目比较鬼畜。。。我还是上py好了。。。

 1 def C(n, m) :
 2     if (n < m) : return 0
 3     return fac[n] / fac[m] / fac[n - m]
 4
 5 def work_odd(n, m) :
 6     return n * C(n - m - 1, m - 1) * fac[m - 1]
 7
 8 def work_even(n, m) :
 9     res = 0
10     n /= 2
11     i = m
12     while (i > 0) :
13         res = (res + C(n - m - 1, i - 1) * C(m, i)) * 2
14         i -= 1
15     return res * fac[m - 1] * n;
16
17 fac = [1] * 105
18 for i in range(1, 100) : fac[i] = fac[i - 1] * i
19 n = input()
20 m = 8
21 while (n > 0) :
22     if (n < m * 2) : print 0
23     elif (n % 2 == 1) : print work_odd(n, m)
24     else : print work_even(n, m)
25     n = input();

View Code

转载于:https://www.cnblogs.com/rausen/p/4335804.html

AOJ2025 Eight Princes相关推荐

  1. 佛罗伦斯王子(英文版) Princes of Florence--(card game)

    游戏人数:3-5人 适合年龄:12岁以上 游戏时间:约75-100分 游戏设计:Wolfgang Kramer and Richard Ulrich 语言版本:英文 体验文艺复兴的黄金时代!您将要担任 ...

  2. Codeforces 1327 B. Princesses and Princes

    题意: 有 n n n 个公主, n n n 个王子,每个公主有 k k k 个中意的王子,问有没有办法增加公主与王子匹配的个数,有就输出 " I M P R O V E " &q ...

  3. Swift 中 10 个震惊小伙伴的单行代码

    几年前,函数式编程的复兴正值巅峰,一篇介绍 Scala 中 10 个单行函数式代码的博文在网上走红.很快地,一系列使用其他语言实现这些单行代码的文章也随之出现,比如 Haskell,Ruby,Groo ...

  4. Serendipity解决IE缓存为0

    前些天又在网上重新看了一遍<十七岁不哭>,算上在电视上看过得次数,这次应该是看过得第七.八次了.以前看得时候只是看,这次呢就想顺手把视频给保留下来. 这天下午看过两集之后,还是习惯性得打开 ...

  5. Leetcode-最佳买卖股票机含冷冻期

    int maxProfit(int* prices, int pricesSize){if(pricesSize == 0){return 0;}/*第i天结束之后f[i][0]:持有一支股票的最大收 ...

  6. HDU 4685 Prince and Princess(二分匹配加点建图+强连通分量)

    题目链接 Problem Description There are n princes and m princesses. Princess can marry any prince. But pr ...

  7. 第十一届河南省赛--H : Attack City and Capture Territory

    题目链接 The Three Kingdoms period was a relatively famous period in the history of China. From the Batt ...

  8. 新概念英语第三册01-20课(转)

    Lesson 1  A Puma at large 逃遁的美洲狮 1.美洲狮是大的,Pumas are large,猫一样的 cat-like动物 animals它们被发现 which are fou ...

  9. 网游UI解决方案的选择(作者 鸣·铭)

    网游UI解决方案的选择作者 鸣·铭 转载请注明出自http://www.mobilegamebase.com 由于新项目动工,UI方面需要确定方向,所以最近纠结于各种解决方案的选择.以下是对各方案的比 ...

  10. 【Python自然语言处理】读书笔记:第五章:分类和标注词汇

    jupyter 版请见我的github:https://github.com/JackKuo666/Python_nlp_notes [Python自然语言处理]读书笔记:第五章:分类和标注词汇 本章 ...

最新文章

  1. 【TCP/IP详解 卷一:协议】第十九章 TCP的交互数据流
  2. CTFshow 信息收集 web10
  3. emWin 2天速成实例教程002_多个页面窗口切换
  4. 产品新人没有完整项目经验?这篇文章帮你打开思路
  5. Qt实践| HTTP知识点-Qt填充referer请求头盗取图片
  6. step与matlab的opc,wincc与matlab通过OPC通讯
  7. mysql5.6 排序失效_mysql 使用union(all) + order by 导致排序失效
  8. python 统计英文词频
  9. 一步一步搭建vue项目
  10. struts2拦截器的使用及作用
  11. 北京专科计算机学校排名及分数线,北京专科大学排名及分数线
  12. vscode下的vue文件格式化
  13. 货拉拉NLP算法实习生面经
  14. 建模语言UML在软件开发中的应用
  15. java与模式--里氏代换原则,依赖倒置原则
  16. java Workbook接口 提供的方法
  17. 校验验证码 实现登录验证
  18. IP代理池proxy,自建,免费,详细教程
  19. C++和Rust_自从尝了Rust,Java突然不香了
  20. Eclipse 使用http://localhost:8080/ 访问出现404错误

热门文章

  1. 技术沙龙 | Android应用之插件化
  2. 《机器学习》瓜书—周志华
  3. ABAP术语-V1 Module
  4. terminator安装
  5. 如何使用Java读写系统属性?
  6. 方法、hadoop源码之JobQueueTaskScheduler-by小雨
  7. Android手机root概念
  8. Visual Studio Code 调试 React Native (RN) 步骤 Mac版
  9. iOS :APP 提交描述注意事项
  10. greenplum数据库建表及分区