ACM学习历程—HDU2068 RPG的错排(组合数学)

Description

今年暑假杭电ACM集训队第一次组成女生队,其中有一队叫RPG,但做为集训队成员之一的野骆驼竟然不知道RPG三个人具体是谁谁。RPG给他机会让他猜猜,第一次猜:R是公主,P是草儿,G是月野兔;第二次猜:R是草儿,P是月野兔,G是公主;第三次猜:R是草儿,P是公主,G是月野兔;......可怜的野骆驼第六次终于把RPG分清楚了。由于RPG的带动,做ACM的女生越来越多,我们的野骆驼想都知道她们,可现在有N多人,他要猜的次数可就多了,为了不为难野骆驼,女生们只要求他答对一半或以上就算过关,请问有多少组答案能使他顺利过关。

Input

输入的数据里有多个case,每个case包括一个n,代表有几个女生,(n<=25), n = 0输入结束。

Output

对应每组数据输出最小移动距离。

Sample Input

1
2
0

Sample Output

1
1

 

假设i个人在他本来位置,其余人错排的种数是f[i],那么题目要求的就是所有大于等于(n+1)/2的f[i]的和,n+1是为了对奇数偶数情况统一。

假设k个人错排是p[k],

那么就是n个人先取出i个人在自己位置C(n, i),其余人再错排p[n-i],然后控制i的范围就OK了。

这里需要注意的是由于题目没有模的情况,所以所有数可能会很大,所以在求p和c的时候最好是相邻项间递推。

 

代码:

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <set>
#include <map>
#include <queue>
#include <string>
#include <algorithm>
#define LL long longusing namespace std;int n;
LL p[30], c[30], ans;void init()
{p[0] = 1;p[1] = 0;p[2] = 1;for (int i = 3; i < 30; ++i)p[i] = (i-1)*(p[i-1]+p[i-2]);
}void cal()
{c[0] = 1;for (int i = 1; i <= n; ++i)c[i] = c[i-1]*(n-i+1)/i;
}void work()
{ans = 0;int half = (n+1)/2;for (int i = 0; i+half <= n; ++i)ans += c[i+half]*p[n-i-half];printf("%I64d\n", ans);
}int main()
{//freopen("test.in", "r", stdin);
    init();while (scanf("%d", &n) != EOF && n){cal();work();}return 0;
}

 

转载于:https://www.cnblogs.com/andyqsmart/p/4756598.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/431448.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python训练手势分类器_机器学习零基础?手把手教你用TensorFlow搭建图像分类器|干货...

编者按&#xff1a;Pete Warden是TensorFlow移动团队的技术负责人。曾在Jetpac担任首次技术官。Jetpac的深度学习技术经过优化&#xff0c;可在移动和嵌入式设备上运行。该公司已于2014年被谷歌收购。Pete还曾在苹果公司从事GPU优化领域的图像处理工作&#xff0c;并为OReilly撰…

汉军Hundre考勤数据库数据表分析总结

ar-ATT为考勤刷卡数据库 Att-carRecord为刷卡流水&#xff0c;但是插入时需要根据workrecord表中数据进行判断 ATT-workrecord为运算后明细表存放位置&#xff0c;每次运算后重新生成。 刷卡数据更改方法&#xff1a; 查询序列&#xff1a;SELECT * FROM [AR_att].[dbo].[ATT_…

python内存消耗大吗_如何减少python内存的消耗?

标签&#xff1a;Python 打算删除大量涉及像C和C语言那样的复杂内存管理。当对象离开范围&#xff0c;就会被自动垃圾收集器回收。然而&#xff0c;对于由Python 开发的大型且长期运行的系统来说&#xff0c;内存管理是不容小觑的事情。在这篇博客中&#xff0c;我将会分享关于…

php invalid access,PHP出错消息PHP has encountered an Access Violation at XXXXXXXX 如何解决?...

1、是否zend所需的dll文件所在目录给的权限不够&#xff0c;必须有读取和运行的权限2、如果使用的是windows系统&#xff0c;是否设置过应用池&#xff0c;比如池https://anlijun.co中限制了什么

java class load 类加载

1:what is it jvm把描述类的数据从class字节码文件加载到内存&#xff0c;并对数据进行校验、解析、初始化&#xff0c;最终成为jvm直接使用的数据类型 1、ClassNotFoundExcetpion   我们在开发中&#xff0c;经常可以遇见java.lang.ClassNotFoundExcetpion这个异常&#xf…

python回溯方法的模板_Python基于回溯法子集树模板解决0-1背包问题实例

本文实例讲述了Python基于回溯法子集树模板解决0-1背包问题。分享给大家供大家参考&#xff0c;具体如下&#xff1a;问题给定N个物品和一个背包。物品i的重量是Wi,其价值位Vi &#xff0c;背包的容量为C。问应该如何选择装入背包的物品&#xff0c;使得放入背包的物品的总价值…

debian执行php网页,如何在Debian上安装和使用PHP Composer

php composer是一个包管理工具&#xff0c;它消除了手动维护应用程序的PHP包的麻烦&#xff0c;可以使用composer轻松安装所有必需的包。本篇文章将介绍在Debian系统上安装和配置PHP Composer的方法。1、条件shell使用sudo权限访问正在运行的debian系统。必须安装和配置5.3或更…

python图灵测试_最前沿:基于GAN和RL的思想来训练对话生成,通过图灵测试可期!...

PS&#xff1a;本文分析略深&#xff0c;需要一定的RL和GAN的基础。前两天&#xff0c;Stanford的NLP小组出了一篇神经网络对话生成的论文&#xff1a;标题就是使用对抗学习来做神经对话生成。这个idea非常的赞&#xff01;在我看来是通往图灵测试的正确一步。以前的对话生成&a…

java map 实现 序列化,MapReduce序列化

序列化就是把内存中的对象转换成字节序列以便于存储到磁盘(持久化)和网络传输。反序列化就是将字节序列或者是持久化的数据转换成内存中的对象。内存中的对象只能本地进程使用&#xff0c;断掉后就消失了&#xff0c;也不能被发送到网络上的另一台机器&#xff0c;序列化可以将…

安装php时,make步骤报错make: *** [sapi/fpm/php-fpm] Error 1

安装PHP过程中&#xff0c;make步骤报错&#xff1a;(集中网络上各种解决方法) (1)-liconv -o sapi/fpm/php-fpm /usr/bin/ld: cannot find -liconv collect2: ld returned 1 exit status make: *** [sapi/fpm/php-fpm] Error 1 [rootlocalhost php-5.4.5]# 初步定位是iconv的问…

JAVA_if或者怎么用,Java If语句

Java教程 - Java If语句Java if语句用于根据条件执行一个代码块。Java If语句下面是Java if语句的最简单形式:if(condition)statement;condition是一个布尔表达式。如果condition是true那么执行语句。如果condition是false&#xff0c;那么绕过语句。以下代码根据an的值输出消息…

iOS开发——高级技术本地化与国际化详解

本地化与国际化详解效果如下&#xff1a;英语&#xff1a; 中文&#xff1a; 具体实现如下&#xff1a;一。先做准备&#xff1a;设置程序本地化在xcode点击程序图标…

hog特征提取python代码_hog特征提取-python实现

【转载自 https://blog.csdn.net/ppp8300885/article/details/71078555】全部代码&#xff1a;importcv2importnumpy as npimportmathimportmatplotlib.pyplot as pltclassHog_descriptor():def __init__(self, img, cell_size16, bin_size8):self.imgimgself.img np.sqrt(img …

matlab 矢量化,matlab矢量化编程简要

一、基本技术1)MATLAB索引或引用(MATLAB Indexing or Referencing)在MATLAB中有三种基本方法可以选取一个矩阵的子阵。它们分别是下标法&#xff0c;线性法和逻辑法(subscripted, linear,andlogical)。1.1)下标法非常简单&#xff0c;看几个例子就好。A 6:12;A([3,5])ans 8 10…

Hadoop-HBASE案例分析-Hadoop学习笔记二

之前有幸在MOOC学院抽中小象学院hadoop体验课。 这是小象学院hadoop2.X概述第八章的笔记 主要介绍HBase&#xff0c;一个分布式数据库的应用案例。 案例概况&#xff1a; 1&#xff09;时间序列数据库(OpenTSDB) 用HBase储存时间序列数据&#xff0c;每时每刻都在解决&#xff…

python测试udp端口_怎样测试UDP端口

文章概述&#xff1a;怎样测试远程UDP端口&#xff0c;我们一般情况下&#xff0c;应用服务都使用的TCP端口&#xff0c;但是某些情况下&#xff0c;我们也需要开启UDP端口。本文简要描述怎样测试UDP端口是否正常&#xff1f;TCP端口大家都知道,比如80端口&#xff0c;可以使用…

Matlab经纬度坐标转换xy坐标,经纬度坐标系转换为UTM坐标系(matlab)

如题所说&#xff0c;直接上程序。验证自己做一下&#xff0c;结果应该是对的。诚不我欺。(注意&#xff1a;程序名与函数名保持一致&#xff01;&#xff01;&#xff01;)function[shuchu]lat_lon2utm(lat_shuru,lon_shuru)%地理经纬度坐标转换为UTM坐标size_shuzusize(lat_s…

ASP.NET MVC中的模型装配 封装方法 非常好用

下面说一下我们知道在asp.net mvc中 视图可以绑定一个实体模型 然后我们三层架构中也有一个model模型 但是这两个很多时候却是不一样的对象来的 就拿微软的官方mvc例子来说明 微软的视图实体中 有loginmodel 有registermodel 等等 这些视图模型 都只是占用户实体的某几个字段而…

python webviewer爬虫_爬虫再也不怕检测浏览器环境了

背景之前爬虫 驱动个 selenium 基本上就可以了.但是现在各种检测浏览器环境...特别是不熟悉 js 的同学就更烦了本文是直接把 selenium pyppeteer 以及正常打开浏览器 的环境差异直接列出来这样你就可以更愉快的爬虫了(可以直接把环境全部模拟上,或者大概看看有啥,下次看人家混淆…

jQuery: 整理2---操作元素的样式

1.获取元素的class属性值 attr("class") <div id"conBlue" class"blue larger">天蓝色</div>const cla $("#conBlue").attr("class") console.log(cla) // blue larger 2.设置元素的样式 attr("class…