题目大意

给你n个二元组

问你有几种排列是的按两个关键字中的任意一个都不是不降排列的

分析

不妨容斥

我们先加上总的方案数$n!$

之后我们按第一个关键字排序

因为值相同的情况下不影响答案

所以让总方案数减去$\prod sum_{ai}!$即可

对于第二关键字的情况同上

我们再使序列同时按照第一关键字和第二关键字排序

然后总方案数加上$\prod sum_{(ai,bi)}!$即可

代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<cctype>
#include<cmath>
#include<cstdlib>
#include<queue>
#include<ctime>
#include<vector>
#include<set>
#include<map>
#include<stack>
using namespace std;
#define int long long
const int mod = ;
int p[],n,m,Ans;
struct node {
int x,y;
};
node d[];
inline void init(){
int i,j,k;
p[]=;
for(i=;i<=n;i++)p[i]=p[i-]*i%mod;
}
inline bool cmp1(const node a,const node b){
if(a.x==b.x)return a.y<b.y;
return a.x<b.x;
}
inline bool cmp2(const node a,const node b){
return a.y<b.y;
}
signed main(){
int i,j,k;
scanf("%lld",&n);
init();
for(i=;i<=n;i++)scanf("%lld%lld",&d[i].x,&d[i].y);
Ans=p[n];
sort(d+,d+n+,cmp1);
int res=;
for(i=;i<=n;i++){
j=i;
while(j+<=n&&d[j+].x==d[j].x)j++;
res=res*p[j-i+]%mod;
i=j;
}
Ans=(Ans-res+mod)%mod;
sort(d+,d+n+,cmp2);
res=;
for(i=;i<=n;i++){
j=i;
while(j+<=n&&d[j+].y==d[j].y)j++;
res=res*p[j-i+]%mod;
i=j;
}
Ans=(Ans-res+mod)%mod;
sort(d+,d+n+,cmp1);
int ok=;
for(i=;i<=n;i++)
if(d[i].y<d[i-].y){
ok=;
break;
}
res=;
if(ok){
for(i=;i<=n;i++){
j=i;
while(j+<=n&&d[j+].y==d[j].y&&d[j+].x==d[j].x)j++;
res=res*p[j-i+]%mod;
i=j;
}
Ans=(Ans+res)%mod;
}
cout<<Ans<<"\n";
return ;
}

1207D Number Of Permutations的更多相关文章

  1. Number Of Permutations

    Number Of Permutations 思路:利用容斥,首先所有可能的排列肯定是fac[n],然后可能会有三种 bad 的情况: ①第一个元素的排列是非递减 ②第二种是第二个元素的排列是非递减 ...

  2. D. Number Of Permutations 符合条件的排列种类

    D. Number Of Permutations time limit per test 2 seconds memory limit per test 256 megabytes input st ...

  3. 双元素非递增(容斥)--Number Of Permutations Educational Codeforces Round 71 (Rated for Div. 2)

    题意:https://codeforc.es/contest/1207/problem/D n个元素,每个元素有a.b两个属性,问你n个元素的a序列和b序列有多少种排序方法使他们不同时非递减(不同时g ...

  4. CF D. Number Of Permutations 排列

    挺水的一道题~ 拿全排列随便乘一下就好了. #include <cstdio> #include <algorithm> #define N 300004 #define ll ...

  5. codeforces 341C Iahub and Permutations(组合数dp)

    C. Iahub and Permutations time limit per test 1 second memory limit per test 256 megabytes input sta ...

  6. hdu 4055 Number String(dp)

    Problem Description The signature of a permutation is a string that is computed as follows: for each ...

  7. codeforces 340E Iahub and Permutations(错排or容斥)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud Iahub and Permutations Iahub is so happy ...

  8. hdu 4055 Number String(有点思维的DP)

    Number String Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) T ...

  9. hdu4055 Number String

    Number String Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tota ...

随机推荐

  1. python基础-10 程序目录结构 学生选课系统面向对象练习

    一 程序目录结构 1 bin文件夹 二进制文件.代码程序  2 conf 配置文件  3 帮助文档  4 头文件库文件等 二 学生选课系统部分代码 未完待续 1 包内的__init__.py文件 在包 ...

  2. Java第四周编程总结

    第四周编程总结 1.写一个名为Rectangle的类表示矩形.其属性包括宽width.高height和颜色color,width和height都是double型的,而color则是String类型的. ...

  3. VSCode工具插件推荐

    一:VSCode简介 VSCode( Visual Studio Code)是微软出的一款轻量级代码编辑器 ,重要的是它在Windows, OS X 和Linux操作系统的桌面上均可运行.Visual ...

  4. 【题解】Oh My Holy FFF

    题目大意   有\(n\)个士兵(\(1 \leq n \leq 10^5\)),第\(i\)个士兵的身高为\(h_{i}\),现在要求把士兵按照原来的顺序分成连续的若干组,要求每组的士兵数量不超过\ ...

  5. TensorFlow 解决“ImportError: Could not find 'cudnn64_6.dll'”

    解决“ImportError: Could not find 'cudnn64_6.dll'” 1. 问题描述 运行一个基于Tensorflow的代码时报错,如下所示: ImportError: Co ...

  6. XE2再次安装JVCL

    说再次安装,是因为我忘了自己之前写过的方法,装完之后感觉怪怪的,想看看别人是怎么装的,于是用google搜索了一下,才发现之前写过: http://www.cnblogs.com/findumars/ ...

  7. 修改url,

    第一种场景: 无论url怎么变,表单里面的url始终不变 http://127.0.0.1:8000/CC/indexssssssssssssssssss/ url(r'^indexsssssssss ...

  8. 时间选择器moment格式化存在时差问题

    时间选择器moment格式化存在时差问题解决方法: return moment(date).utc().zone(+6).format('YYYY-MM-DD')解决IE9时间选择器不能回显数据解决方 ...

  9. Composer简介与下载安装

    简介: 初次接触Composer的PHP程序员可能是需要下载ThinkPHP框架(5.1),那么什么是Composer,怎么下载安装呢? Composer是一个依赖管理工具,下载管理第三方包是其主要功 ...

  10. tomcat闪屏是jdk JAVA_HOEM环境变量配置问题

    JAVA_HOME=D:\jdk.18