[BZOJ 4563]放棋子
[BZOJ 4563]放棋子
题目
给你一个N*N的矩阵,每行有一个障碍,数据保证任意两个障碍不在同一行,任意两个障碍不在同一列,要求你在这个矩阵上放N枚棋子(障碍的位置不能放棋子),要求你放N个棋子也满足每行只有一枚棋子,每列只有一枚棋子的限制,求有多少种方案。INPUT
第一行一个N,接下来一个N*N的矩阵。N<=200,0表示没有障碍,1表示有障碍,输入格式参考样例
OUTPUT
一个整数,即合法的方案数。
SAMPLE
INPUT
2
0 1
1 0OUTPUT
1
解题报告
一道读入都不用打完的题= =
只用读入$n$就好了QAQ
全错位排列往上一打,加个高精就好了QAQ
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
struct bign{
int a[],len;
bign():len(){memset(a,,sizeof(a));}
bign(const char *s){*this=s;}
bign(const int &x){*this=x;}
inline void operator=(const char *s){
len=strlen(s);
for(int i=;i<len;++i)
a[i]=s[len-i-]-'';
}
inline void operator=(const int &x){
char s[];
memset(s,,sizeof(s));
sprintf(s,"%d",x);
*this=s;
}
inline void clear(){while(len>&&!a[len-])--len;}
inline bign operator+(const bign &x){
bign ret;
ret.len=max(len,x.len)+;
int jw();
for(int i=;i<len;++i){
ret.a[i]=a[i]+x.a[i]+jw;
jw=ret.a[i]/;
ret.a[i]%=;
}
if(jw)
ret.a[len++]=jw;
ret.clear();
return ret;
}
inline void operator+=(const bign &x){*this=*this+x;}
inline bign operator-(const bign &x){
bign ret;
ret=*this;
for(int i=;i<len;++i){
if(ret.a[i]<x.a[i])
ret.a[i]+=,--ret.a[i+];
ret.a[i]=ret.a[i]-x.a[i];
}
ret.clear();
return ret;
}
inline void operator-=(const bign &x){*this=*this-x;}
inline bign operator-(const int &x){
bign tmp(x);
return *this-tmp;
}
inline void operator-=(const int &x){*this=*this-x;}
inline bign operator*(const bign &x){
bign ret;
ret.len=len+x.len+;
int jw;
for(int i=;i<len;++i){
jw=;
for(int j=;j<x.len;++j){
ret.a[i+j]+=a[i]*x.a[j]+jw;
jw=ret.a[i+j]/;
ret.a[i+j]%=;
}
ret.a[i+x.len]+=jw;
}
ret.clear();
return ret;
}
inline void operator*=(const bign &x){*this=*this*x;}
inline bign operator*(const int &x){
bign tmp(x);
return *this*tmp;
}
inline void operator*=(const int &x){*this=*this*x;}
inline void print(){
for(int i=len-;i>=;--i)
printf("%d",a[i]);
}
}f[];
int n;
int main(){
scanf("%d",&n);
f[]=;
f[]=;
for(int i=;i<=n;++i)
f[i]=(f[i-]+f[i-])*(i-);
f[n].print();
}
[BZOJ 4563]放棋子的更多相关文章
- BZOJ 4563: [Haoi2016]放棋子
Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 389 Solved: 248[Submit][Status][Discuss] Descriptio ...
- BZOJ——T 4563: [Haoi2016]放棋子
Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 387 Solved: 247[Submit][Status][Discuss] Descriptio ...
- BZOJ 3294: [Cqoi2011]放棋子
3294: [Cqoi2011]放棋子 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 628 Solved: 238[Submit][Status] ...
- bzoj千题计划261:bzoj3294: [Cqoi2011]放棋子
http://www.lydsy.com/JudgeOnline/problem.php?id=3294 如果一个颜色的棋子放在了第i行第j列,那这种颜色就会占据第i行第j列,其他颜色不能往这儿放 设 ...
- 【BZOJ 3294】 3294: [Cqoi2011]放棋子 (DP+组合数学+容斥原理)
3294: [Cqoi2011]放棋子 Description Input 输入第一行为两个整数n, m, c,即行数.列数和棋子的颜色数.第二行包含c个正整数,即每个颜色的棋子数.所有颜色的棋子总数 ...
- 【BZOJ3294】放棋子(动态规划,容斥,组合数学)
[BZOJ3294]放棋子(动态规划,容斥,组合数学) 题面 BZOJ 洛谷 题解 如果某一行某一列被某一种颜色给占了,那么在考虑其他行的时候可以直接把这些行和这些列给丢掉. 那么我们就可以写出一个\ ...
- BZOJ4563:[HAOI2016]放棋子——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=4563 给你一个N*N的矩阵,每行有一个障碍,数据保证任意两个障碍不在同一行,任意两个障碍不在同一列 ...
- bzoj4563: [Haoi2016]放棋子(错排+高精)
4563: [Haoi2016]放棋子 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 387 Solved: 247[Submit][Status] ...
- [Haoi2016]放棋子 题解
4563: [Haoi2016]放棋子 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 440 Solved: 285[Submit][Status] ...
随机推荐
- P3178 [HAOI2015]树上操作 树链剖分
这个题就是一道树链剖分的裸题,但是需要有一个魔性操作___编号数组需要开longlong!!!震惊!真的神奇. 题干: 题目描述 有一棵点数为 N 的树,以点 为根,且树点有边权.然后有 M 个操作, ...
- Akka源码分析-Remote-ActorSystem
前面的文章都是基于local模式分析的,现在我们简要分析一下在remote模式下,ActorSystem的创建过程. final val ProviderClass: String = setup.g ...
- hastable 用法
一,哈希表(Hashtable)简述 在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似keyvalue的键值对,其中 ...
- mysql中类型转换
MySQL 的CAST()和CONVERT()函数可用来获取一个类型的值,并产生另一个类型的值 CAST(xxx AS 类型), CONVERT(xxx,类型) 二进制,同带binary前缀的效果 : ...
- Codeforces Round #419
A Karen and Morning 找最近的回文时间 模拟 往后推 判判就行 //By SiriusRen #include <bits/stdc++.h> using namesp ...
- 【知识总结】卡特兰数 (Catalan Number) 公式的推导
卡特兰数的英文维基讲得非常全面,强烈建议阅读! Catalan number - Wikipedia (本文中图片也来源于这个页面) 由于本人太菜,这里只选取其中两个公式进行总结. (似乎就是这两个比 ...
- [转]linux下logrotate 配置和理解
转自:http://blog.csdn.net/cjwid/article/details/1690101 对于Linux 的系统安全来说,日志文件是极其重要的工具.系统管理员可以使用logrotat ...
- MVC系列学习(十二)-服务端的验证
在前一讲,提到过,客户端的东西永远可以造假,所以我们还要在服务端进行验证 注意:先加载表单,后添加js文件,才能有效:而先加载js,后添加表单,是没有效果的 1.视图与Model中的代码如下 2.一张 ...
- Hibernate中使用子查询
子查询: 子查询是SQL语句中非常重要的功能特性,它可以在SQL语句中利用另外一条SQL语句的查询结果,在Hibernate中HQL查询同样对子查询功能提供了支持. 如下面代码所示: List ...
- JS——html基本结构
document.title——文档标题 document.head——文档头标签 document.body——文档的主体 document.documentElement 表示整个文档的html标 ...