BZOJ4563: [Haoi2016]放棋子
Description
Input
Output
Sample Input
0 1
1 0
Sample Output
- #include<cstdio>
- #include<cctype>
- #include<queue>
- #include<cstring>
- #include<algorithm>
- #define rep(i,s,t) for(int i=s;i<=t;i++)
- #define dwn(i,s,t) for(int i=s;i>=t;i--)
- #define ren for(int i=first[x];i;i=next[i])
- using namespace std;
- const int BufferSize=1<<16;
- char buffer[BufferSize],*head,*tail;
- inline char Getchar() {
- if(head==tail) {
- int l=fread(buffer,1,BufferSize,stdin);
- tail=(head=buffer)+l;
- }
- return *head++;
- }
- inline int read() {
- int x=0,f=1;char c=getchar();
- for(;!isdigit(c);c=getchar()) if(c=='-') f=-1;
- for(;isdigit(c);c=getchar()) x=x*10+c-'0';
- return x*f;
- }
- typedef long long ll;
- const int maxn=410;
- struct bign {
- int len,s[maxn];
- bign() {memset(s,0,sizeof(s));len=1;}
- void operator = (int b) {
- len=0;while(b) s[len++]=b%10,b/=10;
- }
- void clean() {while(len>1&&!s[len-1]) len--;}
- bign operator + (const bign& b) const {
- bign c;c.len=max(b.len,len)+1;
- rep(i,0,c.len-1) {
- c.s[i]+=s[i]+b.s[i];
- c.s[i+1]+=c.s[i]/10;
- c.s[i]%=10;
- }
- c.clean();return c;
- }
- bign operator - (const bign& b) const {
- bign c;c.len=max(b.len,len);
- rep(i,0,c.len-1) {
- c.s[i]+=s[i]-b.s[i];
- if(c.s[i]<0) c.s[i]+=10,c.s[i+1]--;
- }
- c.clean();return c;
- }
- bign operator * (const int b) const {
- bign c;c.len=len+5;
- int last=0;
- rep(i,0,c.len-1) {
- c.s[i]=s[i]*b+last;
- last=c.s[i]/10;
- c.s[i]%=10;
- }
- c.clean();return c;
- }
- bign operator * (const bign& b) const {
- bign c;c.len=len+b.len+2;
- rep(i,0,len-1) rep(j,0,b.len-1) c.s[i+j]+=s[i]*b.s[j];
- rep(i,0,c.len-1) c.s[i+1]+=c.s[i]/10,c.s[i]%=10;
- c.clean();return c;
- }
- void print() {dwn(i,len-1,0) printf("%d",s[i]);puts("");}
- };
- bign C[2][maxn],xp[maxn];
- int main() {
- int n=read(),k=0;
- rep(i,1,n) rep(j,1,n) k+=read();
- xp[0]=1;rep(i,1,n) xp[i]=xp[i-1]*i;
- int cur=0;
- rep(i,1,k) {
- cur^=1;
- C[cur][0]=1;C[cur][i]=1;
- rep(j,1,i-1) C[cur][j]=C[cur^1][j-1]+C[cur^1][j];
- }
- bign ans=xp[n];
- rep(i,1,k) {
- bign res=C[cur][i]*xp[n-i];
- if(i&1) ans=ans-res;
- else ans=ans+res;
- }
- ans.print();
- return 0;
- }
BZOJ4563: [Haoi2016]放棋子的更多相关文章
- bzoj4563: [Haoi2016]放棋子(错排+高精)
4563: [Haoi2016]放棋子 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 387 Solved: 247[Submit][Status] ...
- BZOJ4563 HAOI2016放棋子(高精度)
没看清题还以为是要求数最大匹配数量……注意到任意障碍不在同一行同一列,且恰好有n个障碍,不妨通过交换列使得第i行第i列均有障碍.那么就是个错排了.居然wa了一发简直没救. #include<io ...
- 【BZOJ4563】[Haoi2016]放棋子 错排+高精度
[BZOJ4563][Haoi2016]放棋子 Description 给你一个N*N的矩阵,每行有一个障碍,数据保证任意两个障碍不在同一行,任意两个障碍不在同一列,要求你在这个矩阵上放N枚棋子(障碍 ...
- 洛谷P3182 [HAOI2016]放棋子
P3182 [HAOI2016]放棋子 题目描述 给你一个N*N的矩阵,每行有一个障碍,数据保证任意两个障碍不在同一行,任意两个障碍不在同一列,要求你在这个矩阵上放N枚棋子(障碍的位置不能放棋子),要 ...
- [Haoi2016]放棋子 题解
4563: [Haoi2016]放棋子 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 440 Solved: 285[Submit][Status] ...
- BZOJ4563:[HAOI2016]放棋子——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=4563 给你一个N*N的矩阵,每行有一个障碍,数据保证任意两个障碍不在同一行,任意两个障碍不在同一列 ...
- [HAOI2016] 放棋子及错排问题
题目 Description 给你一个N*N的矩阵,每行有一个障碍,数据保证任意两个障碍不在同一行,任意两个障碍不在同一列,要求你在这个矩阵上放N枚棋子(障碍的位置不能放棋子),要求你放N个棋子也满足 ...
- 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 ...
随机推荐
- thinkphp上传
上传代码 // 缩略图上传 $upload = new \Think\Upload();// 实例化上传类 $upload->maxSize = ;// 设置附件上传大小 $upload-> ...
- [NHibernate]存储过程的使用(一)
目录 写在前面 文档与系列文章 Nhibernate中使用存储过程 一个例子 总结 写在前面 上篇文章一个小插曲,分析了延迟加载是如何解决N+1 select查询问题的.这篇开始介绍在nhiberna ...
- 大熊君JavaScript插件化开发------(实战篇之DXJ UI ------ ItemSelector)
一,开篇分析 Hi,大家好!大熊君又和大家见面了,还记得前两篇文章吗.主要讲述了以“jQuery的方式如何开发插件”,以及过程化设计与面向对象思想设计相结合的方式是 如何设计一个插件的,两种方式各有利 ...
- PHP中global与$GLOBALS['']的区别
+++ 探讨(一)+++++++++++++++++++++++++++++++++++++++ 很多人都认为global和$GLOBALS[]只是写法上面的差别,其实不然. 根据官方的解释是 $GL ...
- CentOS6.3 编译安装LAMP(4):编译安装 PHP5.2.17
所需源码包: /usr/local/src/PHP-5.2.17/libmcrypt-2.5.8.tar.gz /usr/local/src/PHP-5.2.17/mhash-0.9.9.9.tar. ...
- 数据结构快速回顾——平衡二叉树 AVL (转)
平衡二叉树(Balanced Binary Tree)是二叉查找树的一个进化体,也是第一个引入平衡概念的二叉树.1962年,G.M. Adelson-Velsky 和 E.M. Landis发明了这棵 ...
- mac 下修改jenkins的 端口号
sudo defaults write /Library/Preferences/org.jenkins-ci httpPort 7070
- [Linux]系统调用理解(1)
本文是Linux系统调用专栏系列文章的第一篇,对Linux系统调用的定义.基本原理.使用方法和注意事项大概作了一个介绍,以便读者对Linux系统调用建立一个大致的印象. 什么是系统调用? Linux内 ...
- c#接口
//接口中方法 属性 事件等默认都是public 不允许用修饰符修饰 public interface IEventInterFace { string this[int index] { get; ...
- 可以改变this指向的方法
this一般指向的是当前被调用者,但也可以通过其它方式来改变它的指向,下面将介绍三种方式: 1.call用作继承时: function Parent(age){ this.name=['mike',' ...