[BZOJ 4563]放棋子

题目

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

INPUT

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

OUTPUT

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

SAMPLE

INPUT

2
0 1
1 0

OUTPUT

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]放棋子的更多相关文章

  1. BZOJ 4563: [Haoi2016]放棋子

    Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 389  Solved: 248[Submit][Status][Discuss] Descriptio ...

  2. BZOJ——T 4563: [Haoi2016]放棋子

    Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 387  Solved: 247[Submit][Status][Discuss] Descriptio ...

  3. BZOJ 3294: [Cqoi2011]放棋子

    3294: [Cqoi2011]放棋子 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 628  Solved: 238[Submit][Status] ...

  4. bzoj千题计划261:bzoj3294: [Cqoi2011]放棋子

    http://www.lydsy.com/JudgeOnline/problem.php?id=3294 如果一个颜色的棋子放在了第i行第j列,那这种颜色就会占据第i行第j列,其他颜色不能往这儿放 设 ...

  5. 【BZOJ 3294】 3294: [Cqoi2011]放棋子 (DP+组合数学+容斥原理)

    3294: [Cqoi2011]放棋子 Description Input 输入第一行为两个整数n, m, c,即行数.列数和棋子的颜色数.第二行包含c个正整数,即每个颜色的棋子数.所有颜色的棋子总数 ...

  6. 【BZOJ3294】放棋子(动态规划,容斥,组合数学)

    [BZOJ3294]放棋子(动态规划,容斥,组合数学) 题面 BZOJ 洛谷 题解 如果某一行某一列被某一种颜色给占了,那么在考虑其他行的时候可以直接把这些行和这些列给丢掉. 那么我们就可以写出一个\ ...

  7. BZOJ4563:[HAOI2016]放棋子——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=4563 给你一个N*N的矩阵,每行有一个障碍,数据保证任意两个障碍不在同一行,任意两个障碍不在同一列 ...

  8. bzoj4563: [Haoi2016]放棋子(错排+高精)

    4563: [Haoi2016]放棋子 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 387  Solved: 247[Submit][Status] ...

  9. [Haoi2016]放棋子 题解

    4563: [Haoi2016]放棋子 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 440  Solved: 285[Submit][Status] ...

随机推荐

  1. androd基础入门---1环境

    1.项目结构特性 2.模拟器设置 3.编译器的下载 直接点击运行即可

  2. Applications(模拟)

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3705 题意:主要是分值计算要注意以下几点: (1) 在MOJ上解出的题,如 ...

  3. TextMeshPro 图片字Sprite

      生成 需要一个资源  右键生成 调整位置  放在目录  使用 <sprite="NumDamage" index=1><sprite="NumDam ...

  4. Spring中常用的注解,你知道几个呢?

    今天给大家分享下Spring中一般常用的注解都有哪些.可能很多人做了很长是了但有些还是不知道一些注解,不过没有关系,你接着往下看. Spring部分 1.声明bean的注解 @Component 组件 ...

  5. SRM-697-DIV2

    Div2 Medium: DivisibleSetDiv2 Problem Statement      You are given a vector <int> b containing ...

  6. 新人浅谈__(数据库的设计__数据库模型图,数据库E-R图,三大范式)

    >>>>  为什么需要规范的数据库设计 在实际的项目开发中,如果系统的数据存储量较大,设计的表比较多,表和表之间的关系比较复杂,就需要首先考虑规范的数据库设计,然后进行创建库, ...

  7. struts2.1.6存在中文乱码的bug

    如题,后续版本中已解决:可以通过添加filter的方式解决.

  8. JavaScript中的 函数splice() 的使用。

    大二接触JavaScript初期,学习函数中有一道题: 定义一个2个参数的函数.第1个参数是一个数组,第2个参数是需要删除的元素.函数功能,在第1个实参数组中查找第2个实参提供的值,找到则删除该元素( ...

  9. android计算屏幕dp

    首先我们来了解一些基本元素: px:像素,屏幕上的点. dpi:一英寸长的直线上的像素点的数量,即像素密度.标准值是160dp. /*** 正是因为dpi值其代表的特性,所以android项目的资源文 ...

  10. 解决springmvc返回json中文乱码

    在pringmvc中通过设置@ResponseBody返回json乱码问题,这个问题上网找了很久,发现答案真是人云亦云,奉上我的解决方案: 解决方案一:需要导入 jackson-core-asl-1. ...