博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
洛谷P3182 [HAOI2016]放棋子
阅读量:4341 次
发布时间:2019-06-07

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

P3182 [HAOI2016]放棋子

题目描述

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

输入输出格式

输入格式:

 

第一行一个N,接下来一个N*N的矩阵。N<=200,0表示没有障碍,1表示有障碍,输入格式参考样例

 

输出格式:

 

一个整数,即合法的方案数。

 

输入输出样例

输入样例#1:
20 11 0
输出样例#1:
1
/*    错排公式+压位高精(压了4位)    错排公式f(n)=(n-1)*(f(n-1)+f(n-2))*/#include
#include
#include
#include
using namespace std;#define maxn 5010int a[10000],b[10000],c[10000];int n,m,map[maxn][maxn];struct node{ int zu[10000],len; node operator + (const node x)const{ memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); memset(c,0,sizeof(c)); for(int i=len,j=1;i>=1;i--,j++)a[i]=zu[j]; for(int i=x.len,j=1;i>=1;i--,j++)b[i]=x.zu[j]; int l=max(len,x.len); for(int i=1;i<=l;i++){ c[i]+=a[i]+b[i]; c[i+1]+=c[i]/10000; c[i]=c[i]%10000; } while(c[l+1]){ l++; c[l+1]+=c[l]/10000; c[l]=c[l]%10000; } node res; res.len=l; for(int i=1,j=l;i<=l;i++,j--)res.zu[i]=c[j]; return res; } node operator * (const int x)const{ memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); for(int i=1,j=len;i<=len;i++,j--)a[i]=zu[j]; for(int i=1;i<=len;i++){ b[i]+=a[i]*x; b[i+1]+=b[i]/10000; b[i]=b[i]%10000; } int l=len; while(b[l+1]){ l++; b[l+1]+=b[l]/10000; b[l]=b[l]%10000; } node res; res.len=l; for(int i=1,j=l;i<=l;i++,j--)res.zu[i]=b[j]; return res; }}f[maxn];int main(){ scanf("%d",&n); f[1].len=1,f[1].zu[1]=0; f[2].len=1,f[2].zu[1]=1; for(int i=3;i<=n;i++) f[i]=(f[i-1]+f[i-2])*(i-1); printf("%d",f[n].zu[1]); for(int i=2;i<=f[n].len;i++)printf("%04d",f[n].zu[i]); return 0;}

 

转载于:https://www.cnblogs.com/thmyl/p/7552052.html

你可能感兴趣的文章
xkill.sh脚本
查看>>
Chapter02-Oracle Net Architecture
查看>>
Centos 修改主机名称
查看>>
实验室外包项目电路图中复位电路的错误 和 复位电路原理的学习
查看>>
批处理命令——for
查看>>
Swift基本常识点
查看>>
统计一个表中某个字符出现最多的字母.sql
查看>>
Sightseeing trip (POJ - 1734)
查看>>
【面向对象】一单元简单表达式求导总结
查看>>
事件处理程序
查看>>
msfvenom向apk注入payload
查看>>
高精度操作数值 BigDecimal类和BinInteger类
查看>>
uva784-迷宫探索
查看>>
delphi程序最小化任务栏控件 托盘
查看>>
2015年4月如玉
查看>>
oracle中的内连接、左外连接、右外连接、交叉连接、不等连接、自连接
查看>>
正则表达式简单语法以及常用正则表达式
查看>>
KMP
查看>>
Chapter 10 模版方法模式
查看>>
Ubuntu配置ISCSI
查看>>