BZOJ——T 4563: [Haoi2016]放棋子
2024-08-29 21:23:32
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
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(){;}
最新文章
- 错误:document.getElementById(";userForm";).submit();Object is not a function
- iOS : 静态库(.framework)合并
- 学习记录 Java常见的几种字符集以及对 AscII的了解
- JSP或HTML命名规范
- 使用Java编写并运行Spark应用程序
- jQuery模糊选择
- [iOS]C语言技术视频-02-程序分支结构(if...else)
- [Angular Tutorial] 13 -REST and Custom Services
- 安装memcached
- Android简易实战教程--第四十四话《ScrollView和HorizontalScrollView简单使用》
- 越光后端开发——ygapi(2.新建Model)
- MySql常用 join 详解
- Spring Security(十八):5.9 Post Processing Configured Objects
- servlet在地址栏填写参数
- Servlet 2.0 &;&; Servlet 3.0 新特性
- Mysql添加新用户遇到的一些小问题
- 安装及使用virtualenv
- codeforces278A
- centos 安装oracle 11g r2(二)-----监听配置与创建数据库实例
- 解决 docker: Error response from daemon: ... : net/http: TLS handshake timeout.
热门文章
- AngularJS过滤器filter-保留小数-渲染页面-小数点-$filter
- Tempter of the Bone------剪枝
- 【洛谷4770/UOJ395】[NOI2018]你的名字(后缀数组_线段树合并)
- 【洛谷4933】大师(DP)
- ACM_绝对值排序
- 设置靠近 水平居中的主体内容Div 的 左侧位置固定的Div
- 再战primer——decltype 和引用
- MyBatis 配置控制台上显示sql语句(log4j.properties 之三)
- PHP第二阶段学习 一、php的基本语法
- 开发者自建IM服务器必须要解决的几个问题!