博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ZOJ 3687
阅读量:4704 次
发布时间:2019-06-09

本文共 1029 字,大约阅读时间需要 3 分钟。

赤裸的带禁区的排列数,不过,难点在于如何用程序来写这个公式了。纠结了好久没想到,看了看别人的博客,用了DFS,实在妙极,比自己最初想用枚举的笨方法高明许多啊.\

http://blog.csdn.net/hlmfjkqaz/article/details/11037821

自己理解那个DFS后自己敲的。。

#include 
#include
#include
#include
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

  

转载于:https://www.cnblogs.com/jie-dcai/p/4003145.html

你可能感兴趣的文章
hadoop大作业
查看>>
手记 12/30/2015
查看>>
几乎所有编程语言的hello, world程序(1)
查看>>
设计模式之适配器模式
查看>>
JAVA 编程思想第一章习题
查看>>
WPF自定义控件创建
查看>>
面对对象中的访问器(get)和修改器(set)
查看>>
Android特效 五种Toast详解
查看>>
C++字符串相关函数
查看>>
ElasticSearch(十一)Elasticsearch清空指定Index/Type数据
查看>>
(转)Django ====> 实战学习篇三 MODEL之外需要知道的
查看>>
记录一个在制作Swing程序的小怪事
查看>>
Another MySQL daemon already running with the same unix socket的解决
查看>>
VUE基于ElementUI搭建的简易单页后台
查看>>
C#如何运行外部程序(打开可执行程序):ShellExcute和Process
查看>>
xc_domain_save.c
查看>>
仿易讯clientloading效果
查看>>
怎样查看Eclipse是32位还是64位?
查看>>
SpringBoot集成JWT实现token验证
查看>>
xml文件格式说明
查看>>