[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] ...
随机推荐
- Luogu3403跳楼机
https://zybuluo.com/ysner/note/1099616 题面 给你三个数\(x\),\(y\),\(z\),问你能够凑出多少个[1,\(h\)]之间的数. 解析 处理出\(y\) ...
- bzoj1008 [HNOI2008]越狱——快速幂
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1008 (这样一道水题还因为忘记写 %lld WA了那么多遍) 发生越狱的状态数,就是全部状态 ...
- ubuntu16.04 Kafka 安装
Kafka核心概念: 下面介绍Kafka相关概念,以便运行下面实例的同时,更好地理解Kafka. 1. Broker Kafka集群包含一个或多个服务器,这种服务器被称为broker 2. Topic ...
- P3291 [SCOI2016]妖怪
传送门 我数学的确白学了--这种题目竟然一点思路都没有-- 首先可以把每个妖怪看成二维平面上的一个点,那么每一个环境\((a,b)\)就可以看成一条斜率\(k=-\frac{b}{a}\)的过该点的直 ...
- C# 截取字符串——
string strID ="NODE_aSDFghsdfgyuhjidfgh_45678" //得到_ 中间的数 int index = strID.IndexOf(" ...
- NS2学习笔记(三)
代理(Agents) 代理是网络层数据包产生和使用的端点,用于实现多层的协议.Agent类部分用OTcl实现,部分用C++实现.C++的代码在~ns/agent.cc和~ns/agent.h中,OTc ...
- 326 Power of Three 3的幂
给出一个整数,写一个函数来确定这个数是不是3的一个幂.后续挑战:你能不使用循环或者递归完成本题吗? 详见:https://leetcode.com/problems/power-of-three/de ...
- Jquery和Ajax的关系!
Jquery是一种JavaScript框架,而Ajax(Asynchronous JavaScript and XML)是异步JavaScript和XML. Jquery是JavaScript的框架, ...
- P1257 平面上的最接近点对
题目描述 给定平面上n个点,找出其中的一对点的距离,使得在这n个点的所有点对中,该距离为所有点对中最小的 输入输出格式 输入格式: 第一行:n:2≤n≤200000 接下来n行:每行两个实数:x y, ...
- Android O Bitmap 内存分配
我们知道,一般认为在Android进程的内存模型中,heap分为两部分,一部分是native heap,一部分是Dalvik heap(实际上也是native heap的一部分). Andro ...