赤裸的带禁区的排列数,不过,难点在于如何用程序来写这个公式了。纠结了好久没想到,看了看别人的博客,用了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的更多相关文章

  1. ZOJ 3687 The Review Plan I

    The Review Plan I Time Limit: 5000ms Memory Limit: 65536KB This problem will be judged on ZJU. Origi ...

  2. (转)ZOJ 3687 The Review Plan I(禁为排列)

    The Review Plan I Time Limit: 5 Seconds      Memory Limit: 65536 KB Michael takes the Discrete Mathe ...

  3. ZOJ 3687 The Review Plan I 容斥原理

    一道纯粹的容斥原理题!!不过有一个trick,就是会出现重复的,害我WA了几次!! 代码: #include<iostream> #include<cstdio> #inclu ...

  4. 【转载】图论 500题——主要为hdu/poj/zoj

    转自——http://blog.csdn.net/qwe20060514/article/details/8112550 =============================以下是最小生成树+并 ...

  5. ZOJ People Counting

    第十三届浙江省大学生程序设计竞赛 I 题, 一道模拟题. ZOJ  3944http://www.icpc.moe/onlinejudge/showProblem.do?problemCode=394 ...

  6. ZOJ 3686 A Simple Tree Problem

    A Simple Tree Problem Time Limit: 3 Seconds      Memory Limit: 65536 KB Given a rooted tree, each no ...

  7. ZOJ Problem Set - 1394 Polar Explorer

    这道题目还是简单的,但是自己WA了好几次,总结下: 1.对输入的总结,加上上次ZOJ Problem Set - 1334 Basically Speaking ac代码及总结这道题目的总结 题目要求 ...

  8. ZOJ Problem Set - 1392 The Hardest Problem Ever

    放了一个长长的暑假,可能是这辈子最后一个这么长的暑假了吧,呵呵...今天来实验室了,先找了zoj上面简单的题目练练手直接贴代码了,不解释,就是一道简单的密文转换问题: #include <std ...

  9. ZOJ Problem Set - 1049 I Think I Need a Houseboat

    这道题目说白了是一道平面几何的数学问题,重在理解题目的意思: 题目说,弗雷德想买地盖房养老,但是土地每年会被密西西比河淹掉一部分,而且经调查是以半圆形的方式淹没的,每年淹没50平方英里,以初始水岸线为 ...

随机推荐

  1. 王立平--split字符串切割

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzQyNTUyNw==/font/5a6L5L2T/fontsize/400/fill/I0JBQk ...

  2. rails 安装后调整gem sources 地址

    rails 安装后调整gem sources 地址 使用https会有认证的问题: 移除原有的: gem sources --remove https://rubygems.org/ 查看当前的: g ...

  3. 使用Service Bus Topic 实现简单的聊天室

    创建Service Bus能够參照: https://azure.microsoft.com/en-gb/documentation/articles/service-bus-dotnet-how-t ...

  4. 在SAE上使用Ueditor的图片上传功能

    SAE上是没有文件夹读写权限的,所以要在SAE使用Ueditor的图片上传功能须要借助SAE的Storage服务. 一.开通Storage服务 在SAE控制台开通Storage服务,并新增一个doma ...

  5. Ubuntu14.04编译WebRTC For Android代码 2014-07-24

    整整快一年没有写博客了.近期基于Google开源的WebRTC项目做了一款音视频聊天的即时通信项目,期间在下载WebRTC代码时就碰到了一些问题.在此以作记录,也希望可以帮助到正在下载编译WebRTC ...

  6. adplus 抓取dump

    工具所在路径   C:\Program Files\Windows Kits\10\Debuggers\x64 cmd窗口切换目录倒adplus所在路径下,输入抓取命令.adplus -hang -p ...

  7. [转] Java 插入表记录后得到自增的id (附3种方法代码)

    转自:https://blog.csdn.net/yaerfeng/article/details/7231093 在MySQL中,使用auto_increment类型的id字段作为表的主键,并用它作 ...

  8. C#、SQL中的事务

    c#方法一: TransactionOptions transactionOption = new TransactionOptions(); //设置事务隔离级别 transactionOption ...

  9. DB2load遇到SQL3508N错误

    SQL3508N装入或装入查询期间,当存取类型为 "<文件类型>" 的文件或路径时出错.原因码:"<原因码>".路径:"< ...

  10. win7(32位)旗舰版共享HP1010打印机给WINXP专业版

    一.状况: 两台电脑,同一网段内,电脑A是WIN7系统(32位),电脑B是WINXP系统. ①电脑A(win7)已经安装完打印机驱动,能正常打印,对该打印机HP1010共享时,提示“无法保存打印机设置 ...