ZOJ 3687
赤裸的带禁区的排列数,不过,难点在于如何用程序来写这个公式了。纠结了好久没想到,看了看别人的博客,用了DFS,实在妙极,比自己最初想用枚举的笨方法高明许多啊.\
http://blog.csdn.net/hlmfjkqaz/article/details/11037821
自己理解那个DFS后自己敲的。。
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm> using namespace std;
typedef long long LL;
const LL MOD=55566677;
bool visr[55],visc[55];
bool cant[55][55];
int ban[30][2];
LL f[55];
LL ans;
int n,m; void initial(){
f[0]=1;
for(LL i=1;i<55;i++)
f[i]=(f[i-1]*i)%MOD;
} void dfs(int i,int num){ //禁止位置公式求法,实在是妙极地运用了DFS啊,只好
//学习一下了
if(i>=m){
if(num&1) ans=((ans-f[n-num])%MOD+MOD)%MOD;
else ans=(ans+f[n-num])%MOD;
return ;
}
dfs(i+1,num);
if(!visr[ban[i][0]]&&!visc[ban[i][1]]){
visr[ban[i][0]]=visc[ban[i][1]]=true;
dfs(i+1,num+1);
visr[ban[i][0]]=visc[ban[i][1]]=false;
}
} int main(){
initial();
while(scanf("%d%d",&n,&m)!=EOF){
memset(visc,false,sizeof(visc));
memset(visr,false,sizeof(visr));
memset(cant,false,sizeof(cant));
for(int i=0;i<m;i++){
scanf("%d%d",&ban[i][0],&ban[i][1]);
if(cant[ban[i][0]][ban[i][1]]){
i--;
m--;
}
else
cant[ban[i][0]][ban[i][1]]=true;
}
ans=0;
dfs(0,0);
printf("%lld\n",ans);
}
return 0;
}
ZOJ 3687的更多相关文章
- ZOJ 3687 The Review Plan I
The Review Plan I Time Limit: 5000ms Memory Limit: 65536KB This problem will be judged on ZJU. Origi ...
- (转)ZOJ 3687 The Review Plan I(禁为排列)
The Review Plan I Time Limit: 5 Seconds Memory Limit: 65536 KB Michael takes the Discrete Mathe ...
- ZOJ 3687 The Review Plan I 容斥原理
一道纯粹的容斥原理题!!不过有一个trick,就是会出现重复的,害我WA了几次!! 代码: #include<iostream> #include<cstdio> #inclu ...
- 【转载】图论 500题——主要为hdu/poj/zoj
转自——http://blog.csdn.net/qwe20060514/article/details/8112550 =============================以下是最小生成树+并 ...
- ZOJ People Counting
第十三届浙江省大学生程序设计竞赛 I 题, 一道模拟题. ZOJ 3944http://www.icpc.moe/onlinejudge/showProblem.do?problemCode=394 ...
- ZOJ 3686 A Simple Tree Problem
A Simple Tree Problem Time Limit: 3 Seconds Memory Limit: 65536 KB Given a rooted tree, each no ...
- ZOJ Problem Set - 1394 Polar Explorer
这道题目还是简单的,但是自己WA了好几次,总结下: 1.对输入的总结,加上上次ZOJ Problem Set - 1334 Basically Speaking ac代码及总结这道题目的总结 题目要求 ...
- ZOJ Problem Set - 1392 The Hardest Problem Ever
放了一个长长的暑假,可能是这辈子最后一个这么长的暑假了吧,呵呵...今天来实验室了,先找了zoj上面简单的题目练练手直接贴代码了,不解释,就是一道简单的密文转换问题: #include <std ...
- ZOJ Problem Set - 1049 I Think I Need a Houseboat
这道题目说白了是一道平面几何的数学问题,重在理解题目的意思: 题目说,弗雷德想买地盖房养老,但是土地每年会被密西西比河淹掉一部分,而且经调查是以半圆形的方式淹没的,每年淹没50平方英里,以初始水岸线为 ...
随机推荐
- MySQL 的各种查询列子
一.mysql查询的五种子句 where(条件查询).having(筛选).group by(分组).order by(排序).limit(限制结果数) 1.whe ...
- idea安装Jerebel 与使用
在File->setting->plugins->下选择Browse repositories下搜索JRebel Plugin 下载,下载完成之后重启idea. 重启完成后,可见在工 ...
- Python爬虫之正則表達式
1.经常使用符号 . :匹配随意字符,换行符 \n 除外 * :匹配前一个字符0次或无限次 ? :匹配前一个字符0次或1次 .* :贪心算法.尽可能的匹配多的字符 .*? :非贪心算法 () ...
- Qt 图像处理之 灰度变换
对图像的亮度.对照度进行变换是非经常常使用的一种图像处理操作,可是Qt 本身却没有提供对应的功能代码.因此我写了个简单的类来实现这些操作.我把这个类称为 BrightnessMapper. 代码例如以 ...
- 在阿里云的iis上安装php扩展
具体参照http://jingyan.baidu.com/article/11c17a2c5ce349f447e39d6d.html
- 35.QT蝴蝶飞舞
fly.h #ifndef FLY_H #define FLY_H #include <QObject> #include <QPainter> #include <QG ...
- POJ 3764 DFS+trie树
题意: 给你一棵树,求树中最长的xor路径.(n<=100000) 思路: 首先我们知道 A xor B =(A xor C) xor (B xor C) 我们可以随便选一个点DFS 顺便做出与 ...
- C++代码审查---参考林锐高质量C/C++
功能模块名称 审查人 审查日期 代码名称 代码作者 文件结构 重要性 审查项 结论 头文件和定义文件的名称是否合理? 头文件和定义文件的目录结构是否合理? ...
- js-apply call bind 浅析
call 1.第一个参数指定了this,第二个参数传给this,也就是call前面的函数,作为他的参数第三个参数也一样 指定了this,就是执行环境,greet的this在i里面找 function ...
- Spinner默认选择问题
1.需求中使用Spinner,不允许有默认选中,在网上查了好多,有设置 spinner.setSelection(-1,true); 也有设置如下: spinner.setOnItemSelected ...