博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[BZOJ 4563][Haoi2016]放棋子(错排公式)
阅读量:5809 次
发布时间:2019-06-18

本文共 1085 字,大约阅读时间需要 3 分钟。

Description

给你一个N*N的矩阵,每行有一个障碍,数据保证任意两个障碍不在同一行,任意两个障碍不在同一列,要求你在这个矩阵上放N枚棋子(障碍的位置不能放棋子),要求你放N个棋子也满足每行只有一枚棋子,每列只有一枚棋子的限制,求有多少种方案。

Solution

其实和给出的障碍没什么关系,可以直接上错排公式(因为一开始的障碍可以看做一个排列,然后放棋子等同于要你生成一个新的不能有和原来位置相同元素的排列)

f[n]=(f[n-1]+f[n-2])*(n-1)(为什么的话上一篇里有说QwQ)

要加高精!

#include
#include
#include
#include
using namespace std;int n;struct Bign{ static const int base=1000000; int len,s[1000]; Bign(){len=1;memset(s,0,sizeof(s));} Bign(int num){*this=num;} Bign operator = (int num) { len=0; while(num) { s[len++]=num%base; num/=base; } return *this; } Bign operator + (const Bign& b) { Bign c;c.len=0; for(int i=0,g=0;g||i
=0;i--) printf("%06d",s[i]); }}F[2];int main(){ scanf("%d",&n); F[0]=1,F[1]=0; for(int i=2;i<=n;i++) { F[0]=(F[0]+F[1])*(i-1); swap(F[0],F[1]); } F[1].print(); return 0;}

 

转载于:https://www.cnblogs.com/Zars19/p/6979453.html

你可能感兴趣的文章
Remote Desktop Issues
查看>>
IIS7内建账号,应用程序池
查看>>
之字形打印矩阵
查看>>
我的2014-相对奢侈的生活
查看>>
zoj 2412 dfs 求连通分量的个数
查看>>
NLP自然语言处理学习笔记一(环境准备)
查看>>
李开复:中国第四波创业浪潮来临
查看>>
dl以及dt,dd,以及table的tr,th,td最清楚分析
查看>>
js 数据类型问题
查看>>
STL学习小结
查看>>
ORACLE数据库常用查询二
查看>>
VMware-workstation-full-11.0.0-2305329&VMware-player-7.0.0-2305329
查看>>
careercup-C和C++ 13.10
查看>>
Hadoop集群(第10期)_MapReduce与MySQL交互
查看>>
使用Java高速实现进度条
查看>>
【转】inittab文件
查看>>
如何利用【百度地图API】,制作房产酒店地图?(上)——制作自定义标注和自定义信息窗口...
查看>>
Firefox 之 应用小结
查看>>
[ThinkPHP]打开页面追踪调试
查看>>
Oracle建立表空间和用户
查看>>