JZYZOJ1544 [haoi2016T2]放棋子 错排公式 组合数学 高精度
http://172.20.6.3/Problem_Show.asp?ID=1544&a=ProbNF
看了题解才意识到原题有错排的性质(开始根本不知道错排是什么)。
十本不同的书放在书架上。现重新摆放,使每本书都不在原来放的位置。有几种摆法?
这个问题的解答就是10个元素的错排数。
错排定义:考虑一个有n个元素的排列,若一个排列中所有的元素都不在自己原来的位置上,那么这样的排列就称为原排列的一个错排。
错排数的递推式
当n个编号元素放在n个编号位置,元素编号与位置编号各不对应的方法数(错排数)用D(n)表示,
那么D(n) = (n-1) *[D(n-2) + D(n-1)];
还是数学方面的积累太少了
代码
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<iostream>
using namespace std;
const int maxn=;
struct har{
int e[maxn*],len;
har(){memset(e,,sizeof(e));len=;}
};har f[maxn];
int n;
har plu(har x,har y){
har z;z.len=max(x.len,y.len);
for(int i=;i<=z.len;i++){
z.e[i]+=x.e[i]+y.e[i];
z.e[i+]+=z.e[i]/;
z.e[i]%=;
if(z.e[i+]>&&z.len<i+){
z.len=i+;
}
}
return z;
}
har mul(har x,int k){
har z;z.len=x.len;
for(int i=;i<=z.len;i++){
z.e[i]+=x.e[i]*k;
z.e[i+]+=z.e[i]/;
z.e[i]%=;
if(z.e[i+]>&&z.len<i+){
z.len=i+;
}
}
return z;
}
void put(har x){
for(int i=x.len;i>=;i--){
printf("%d",x.e[i]);
}cout<<endl;
}
int main(){
scanf("%d",&n);int x;
for(int i=;i<=n;i++){
for(int j=;j<=n;j++){
scanf("%d",&x);
}
}
f[].e[]=;
f[].e[]=;
for(int i=;i<=n;i++){
f[i]=mul(plu(f[i-],f[i-]),i-);
}
put(f[n]);
return ;
}
JZYZOJ1544 [haoi2016T2]放棋子 错排公式 组合数学 高精度的更多相关文章
- 【BZOJ4563】[Haoi2016]放棋子 错排+高精度
[BZOJ4563][Haoi2016]放棋子 Description 给你一个N*N的矩阵,每行有一个障碍,数据保证任意两个障碍不在同一行,任意两个障碍不在同一列,要求你在这个矩阵上放N枚棋子(障碍 ...
- bzoj4563: [Haoi2016]放棋子(错排+高精)
4563: [Haoi2016]放棋子 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 387 Solved: 247[Submit][Status] ...
- hdu1465(放错信 错排公式)
Problem Description 大家常常感慨,要做好一件事情真的不容易,确实,失败比成功容易多了! 做好“一件”事情尚且不易,若想永远成功而总从不失败,那更是难上加难了,就像花钱总是比挣钱容易 ...
- BZOJ4517:[SDOI2016]排列计数(组合数学,错排公式)
Description 求有多少种长度为 n 的序列 A,满足以下条件: 1 ~ n 这 n 个数在序列中各出现了一次 若第 i 个数 A[i] 的值为 i,则称 i 是稳定的.序列恰好有 m 个数是 ...
- HDU 2048:神、上帝以及老天爷(错排公式,递推)
神.上帝以及老天爷 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...
- HDU 1465 不容易系列之一 (错排公式+容斥)
题目链接 Problem Description 大家常常感慨,要做好一件事情真的不容易,确实,失败比成功容易多了! 做好"一件"事情尚且不易,若想永远成功而总从不失败,那更是难上 ...
- hdu 4535(排列组合之错排公式)
吉哥系列故事——礼尚往来 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Tota ...
- HDU 2068 RPG的错排(错排公式 + 具体解释)
RPG的错排 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
- HDU 2068 RPG错排 [错排公式]
1.题意:1到N的序列的排列中,元素位置与元素值相对应的情况(值为i的元素在某个排列中正好排在第i个位置)大于等于序列规模一半的情况,有多少个? 2.输入输出:每组数据一个数,N,规定输入以0结尾: ...
随机推荐
- 【51NOD】1096 距离之和最小
[算法]数学 [题解] 其实就是求中位数,奇数个点就是最中间的点,偶数个点就是最中间两个点和它们之间的区域皆可(所以偶数不必取到两点正中央,取两点任意一点即可). 我们可以想象现在x轴上有n个点,我们 ...
- Tomcat8利用Redis配置Session共享
同一个应用在运行多个tomcat实例的时候,经常需要共享Session.tomcat配置共享session有多种方式 1.利用tomcat自身集群特性进行配置: 2.利用Memcache第三方缓存进行 ...
- ribbon使用eureka的meta进行动态路由
序 使用eureka的元数据信息,再配上ribbon的路由功能,就可以在api-gateway实现很多功能,比如灰度测试.生产调试等等.下面介绍一下,怎么使用jmnarloch大神提供的ribbon- ...
- Android日历开发之右上角标注红点事件
1.效果如下所示: 2.方法: 前提:已经知道如何在右上角画圆点的情况下. 这是一个任务显示器,每个任务都有一个时间,比如2014.01.12. 如果要标注2016.08 ...
- 基于Django Form源码开发自定义Form组件
import copy import re class ValidateError(Exception): def __init__(self, detail): self.detail = deta ...
- Yii 1.1.17 三、数据库连接、定义模型、数据查询、验证登录、SESSION使用与URL生成
一.数据库连接 1.配置连接参数 在database.php里面开启: 'db' => array( 'connectionString' => 'mysql:host=127.0.0.1 ...
- macaca安装失败的解决办法!
https://github.com/macacajs/macaca-android https://www.jianshu.com/p/76a5be6c1036
- RadioButton 带下划线切换的案例
xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout android:id=& ...
- JQuery一个对象绑定多个事件
jQuery("#id").click(func1).mouseover(func2)//方法连写,func为方法的名字 jQuery("#id").click ...
- IIS 7/8安装SSL证书
文件说明:1. 证书文件1532113691949.pem,包含两段内容,请不要删除任何一段内容.2. 如果是证书系统创建的CSR,还包含:证书私钥文件1532113691949.key.PFX格式证 ...