码迷,mamicode.com
首页 > 其他好文 > 详细

bzoj4563[Haoi2016]放棋子

时间:2016-08-16 23:41:38      阅读:348      评论:0      收藏:0      [点我收藏+]

标签:

bzoj4563[Haoi2016]放棋子

题意:

给你一个N*N的矩阵,每行有一个障碍,数据保证任意两个障碍不在同一行,任意两个障碍不在同一列。要求你放N枚棋子(障碍的位置不能放棋子),也满足每行只有一枚棋子,每列只有一枚棋子的限制,求有多少种方案。N≤200。
题解:
发现在障碍在什么位置和答案无关。因此可以把棋子摆成左上-右下对角线,然后就是错排问题(一个长度为n的排列,要求每个元素不能放在与自己编号相同的位置上,问有多少种方案满足条件)了。错排公式:f[i]=(f[i-1]+f[i-2])*(i-1),特别的,f[0]=1,f[1]=0。本弱太懒了,不想写高精度,写了个python,结果因为不会写wa了好几发QAQ
代码:
1 n=int(raw_input())
2 a=1
3 b=0
4 for i in range(2,n+1):
5     c=(a+b)*(i-1)
6     a=b
7     b=c
8 print b

//python的高亮好丑啊!

 

20160814

bzoj4563[Haoi2016]放棋子

标签:

原文地址:http://www.cnblogs.com/YuanZiming/p/5778008.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!