Time Limit: 10 Sec  Memory Limit: 128 MB
Submit: 387  Solved: 247
[Submit][Status][Discuss]

Description

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

Input

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

Output

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

Sample Input

2
0 1
1 0

Sample Output

1

HINT

 

Source

 错排公式( f[i]=f[i-1]+f[i-2] )* (i-1) + 高精度(压位)

 #include <cstdio>

 const int mod();
const int N();
const int P();
int n; #define max(a,b) (a>b?a:b)
struct Num {
int num[];
// Num() { for(int i=1; i<N; ++i) num[i]=0; num[0]=1; }
void print()
{
printf("%d",num[num[]]);
for(int i=num[]-; i; --i)
printf("%0*d",P,num[i]);
}
}ans[N];
inline void Add(Num a,Num b)
{
// ans[0]=Num();
ans[].num[]=max(a.num[],b.num[]);
for(int i=,x=; i<=ans[].num[]; ++i)
{
ans[].num[i]=a.num[i]+b.num[i]+x;
if(ans[].num[i]>=mod)
{
x=ans[].num[i]/mod;
ans[].num[i]%=mod;
ans[].num[]=max(ans[].num[],i+);
}
else x=;
}
for(; !ans[].num[ans[].num[]]&&ans[].num[]; ) ans[].num[]--;
}
Num Mul(Num a,int x)
{
for(int ove=,i=; i<=a.num[]; ++i)
{
a.num[i]=a.num[i]*x+ove;
if(a.num[i]>=mod)
{
ove=a.num[i]/mod;
a.num[i]%=mod;
a.num[]=max(i+,a.num[]);
}
else ove=;
}
for(; !a.num[a.num[]]&&a.num[]; ) a.num[]--;
return a;
} inline void read(int &x)
{
x=; register char ch=getchar();
for(; ch>''||ch<''; ) ch=getchar();
for(; ch>=''&&ch<=''; ch=getchar()) x=x*+ch-'';
} int Presist()
{
// freopen("firstmeet.in","r",stdin);
// freopen("firstmeet.out","w",stdout);
read(n);
ans[].num[]=ans[].num[]=;
ans[].num[]=; ans[].num[]=;
for(int i=; i<=n; ++i)
{
Add(ans[i-],ans[i-]);
ans[i]=Mul(ans[],i-);
}
ans[n].print();
return ;
} int Aptal=Presist();
int main(){;}

最新文章

  1. 错误:document.getElementById(&quot;userForm&quot;).submit();Object is not a function
  2. iOS : 静态库(.framework)合并
  3. 学习记录 Java常见的几种字符集以及对 AscII的了解
  4. JSP或HTML命名规范
  5. 使用Java编写并运行Spark应用程序
  6. jQuery模糊选择
  7. [iOS]C语言技术视频-02-程序分支结构(if...else)
  8. [Angular Tutorial] 13 -REST and Custom Services
  9. 安装memcached
  10. Android简易实战教程--第四十四话《ScrollView和HorizontalScrollView简单使用》
  11. 越光后端开发——ygapi(2.新建Model)
  12. MySql常用 join 详解
  13. Spring Security(十八):5.9 Post Processing Configured Objects
  14. servlet在地址栏填写参数
  15. Servlet 2.0 &amp;&amp; Servlet 3.0 新特性
  16. Mysql添加新用户遇到的一些小问题
  17. 安装及使用virtualenv
  18. codeforces278A
  19. centos 安装oracle 11g r2(二)-----监听配置与创建数据库实例
  20. 解决 docker: Error response from daemon: ... : net/http: TLS handshake timeout.

热门文章

  1. AngularJS过滤器filter-保留小数-渲染页面-小数点-$filter
  2. Tempter of the Bone------剪枝
  3. 【洛谷4770/UOJ395】[NOI2018]你的名字(后缀数组_线段树合并)
  4. 【洛谷4933】大师(DP)
  5. ACM_绝对值排序
  6. 设置靠近 水平居中的主体内容Div 的 左侧位置固定的Div
  7. 再战primer——decltype 和引用
  8. MyBatis 配置控制台上显示sql语句(log4j.properties 之三)
  9. PHP第二阶段学习 一、php的基本语法
  10. 开发者自建IM服务器必须要解决的几个问题!