一道纯粹的容斥原理题!!不过有一个trick,就是会出现重复的,害我WA了几次!!

代码:

#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<set>
#include<vector>
#define ll long long
#define mod 55566677
using namespace std;
int p[],ans;
int m,n;
bool visd[],visc[],vis[][];
struct point
{
int a,b;
}q[];
void dfs(int s,int i,int f)
{
ans=(ans+f*p[n-s])%mod;
while(ans<) ans=(ans+mod)%mod;
for(int k=i+;k<m;k++){
if(!visd[q[k].a]&&!visc[q[k].b]){
visd[q[k].a]=;
visc[q[k].b]=;
dfs(s+,k,-f);
visd[q[k].a]=;
visc[q[k].b]=;
}
}
}
int main()
{
int i,a,b,j;
p[]=p[]=;
for(i=;i<=;i++) p[i]=((ll)p[i-]*i)%mod;
while(scanf("%d%d",&n,&m)!=EOF){
memset(vis,,sizeof(vis));
memset(visd,,sizeof(visd));
memset(visc,,sizeof(visc));
for(j=i=;i<m;i++){
scanf("%d%d",&a,&b);
if(!vis[a][b]){
vis[a][b]=;
q[j].a=a;
q[j++].b=b;
}
}
m=j;
ans=;
for(i=;i<m;i++){
visd[q[i].a]=;
visc[q[i].b]=;
dfs(,i,);
visd[q[i].a]=;
visc[q[i].b]=;
}
ans=(p[n]-ans)%mod;
while(ans<) ans=(ans+mod)%mod;
printf("%d\n",ans);
}
return ;
}

ZOJ 3687 The Review Plan I 容斥原理的更多相关文章

  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. The Review Plan I-禁位排列和容斥原理

    The Review Plan I Time Limit: 5000ms Case Time Limit: 5000ms Memory Limit: 65536KB   64-bit integer ...

  4. zoj.3868.GCD Expectation(数学推导>>容斥原理)

    GCD Expectation Time Limit: 4 Seconds                                     Memory Limit: 262144 KB    ...

  5. ACM学习历程—ZOJ 3868 GCD Expectation(莫比乌斯 || 容斥原理)

    Description Edward has a set of n integers {a1, a2,...,an}. He randomly picks a nonempty subset {x1, ...

  6. ZOJ 3687

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

  7. harukaの赛前日常

    REMEMBER US. haruka是可爱的孩子. 如题,此博客用来记录我停课后的日常. Dear Diary 10.8 上午考试. T1,直接枚举每一个点最后一次被修改的情况.(100pts) T ...

  8. [容斥原理] zoj 3556 How Many Sets I

    主题链接: http://acm.zju.edu.cn/onlinejudge/showProblem.do? problemId=4535 How Many Sets I Time Limit: 2 ...

  9. ZOJ 3233 Lucky Number --容斥原理

    这题被出题人给活活坑了,题目居然理解错了..哎,不想多说. 题意:给两组数,A组为幸运基数,B组为不幸运的基数,问在[low,high]区间内有多少个数:至少被A组中一个数整除,并且不被B中任意一个数 ...

随机推荐

  1. 【leetcode 简单】第四十八题 旋转数组

    给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数. 示例 1: 输入: [1,2,3,4,5,6,7] 和 k = 3 输出: [5,6,7,1,2,3,4] 解释: 向右旋转 1 ...

  2. IDEA常见错误

    1. inspects a maven model for resolution problems 在添加Maven依赖的时候,报了inspects a maven model for resolut ...

  3. 美团实习Java岗面经,已拿offer

    作者:icysnowgx 链接:https://www.nowcoder.com/discuss/71954?type=2&order=3&pos=10&page=1 来源:牛 ...

  4. 29、最小的K个数

    一.题目 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. 二.解法 import java.util.ArrayList; ...

  5. MongoDB之python简单交互(三)

    python连接mongodb有多种orm,主流的有pymongo和mongoengine. pymongo 安装相关模块 pip install pymongo pymongo操作 主要对象 Mon ...

  6. insta php-fpm 的配置

    [global]pid = /www/wdlinux/phps/70/var/run/php-fpm.piderror_log = /www/wdlinux/phps/70/var/log/php-f ...

  7. sshd_config OpenSSH SSH 进程配置文件配置说明

    名称 sshd_config – OpenSSH SSH 服务器守护进程配置文件 大纲 /etc/ssh/sshd_config 描述sshd 默认从 /etc/ssh/sshd_config 文件( ...

  8. Valid Sudoku&&Sudoku Solver

    Valid Sudoku Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku bo ...

  9. CSU 1355 地雷清除计划

    题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1355 好题,根本想不到是网络流. 模型如图: 假想从右上角到左下角有一条阻拦线,我们就是 ...

  10. python快速教程-vamei

    2016年10月26日 12:00:53 今天开始着手python的学习,希望能高效快速的学完! Python基础(上)... 7 实验简介... 7 一.实验说明... 8 1. 环境登录... 8 ...