题意:和上题基本一样,求至少k对a>b的方案数。不取模!!!


做k+1遍容斥就行了

高精度超强!!!几乎把所有的都用上了

然后,注意有负数,所以容斥的时候正负分别保存然后再一减就行了



~~这是我省选前最后一次写高精度了~~

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long ll;
const int N=205, B=1e4;
inline int read(){
char c=getchar();int x=0,f=1;
while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}
while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}
return x*f;
} struct Big{
int a[120], n;
int& operator [](int x) {return a[x];}
Big():n(1) {memset(a, 0, sizeof(a));}
void ini(int x) {a[1]=x; n=1;}
}f[N][N], C[N][N], fac[N]; Big operator *(Big a, int b) {
int g=0;
for(int i=1; i<=a.n; i++)
g += a[i]*b, a[i] = g%B, g/=B;
if(g) a[++a.n] = g;
return a;
} Big operator *(Big a, Big b) {
Big c;
for(int i=1; i<=a.n; i++) {
int g=0;
for(int j=1; j<=b.n; j++)
g += c[i+j-1]+a[i]*b[j], c[i+j-1] = g%B, g/=B;
c[i+b.n] = g;
}
c.n = a.n + b.n;
while(c.n>1 && c[c.n]==0) c.n--;
return c;
} Big operator +(Big a, Big b) {
int g=0, n=max(a.n, b.n);
for(int i=1; i<=n; i++) {
g += i<=a.n ? a[i] : 0;
g += i<=b.n ? b[i] : 0;
a[i] = g%B, g/=B;
}
a.n = n;
if(g) a[++a.n] = g;
return a;
} Big operator -(Big a, Big b) {
for(int i=1; i<=b.n; i++) {
if(a[i]<b[i]) a[i]+=B, a[i+1]--;
a[i] -= b[i];
}
int p=b.n+1;
while(a[p]<0) a[p]+=B, a[++p]--;
while(a.n>1 && a[a.n]==0) a.n--;
return a;
} void Print(Big &a) {
printf("%d", a[a.n]);
for(int i=a.n-1; i>=1; i--) printf("%04d", a[i]);
} int n, k, a[N], b[N];
int g[N];
void dp() {
fac[0].ini(1);
for(int i=1; i<=n; i++) fac[i] = fac[i-1]*i;
C[0][0].ini(1);
for(int i=1; i<=n; i++) {
C[i][0].ini(1);
for(int j=1; j<=n; j++) C[i][j] = C[i-1][j] + C[i-1][j-1];
}
int now=0;
for(int i=1; i<=n; i++) {
while(now<n && a[i]>b[now+1]) now++;
g[i] = now;
}
for(int i=0; i<=n; i++) f[i][0].ini(1);
for(int i=1; i<=n; i++)
for(int j=1; j<=g[i]; j++) f[i][j] = f[i-1][j] + f[i-1][j-1]*(g[i]-j+1);// Print(f[i][j]), puts("");
}
int main() {
freopen("in","r",stdin);
n=read(); k=read();
for(int i=1; i<=n; i++) b[i]=read();
for(int i=1; i<=n; i++) a[i]=read();
sort(a+1, a+1+n); sort(b+1, b+1+n);
dp();
Big pos, neg, ans;
int kkk=k;
for(int k=0; k<=kkk; k++) { //printf("kkkkkk %d\n",k);
for(int i=k; i<=n; i++){ //printf("i %d\n",i);
Big t = fac[n-i] * f[n][i] * C[i][k]; //printf("t ");Print(t); puts("");
if((i-k)&1) neg = neg + t;
else pos = pos + t;
}
}
ans = pos - neg;
//printf("hi %d ",i),Print(ans), puts("");
Print(ans);
}

BZOJ 2024: [SHOI2009] 舞会 [容斥原理 高精度]的更多相关文章

  1. 【BZOJ 2024】 2024: [SHOI2009] 舞会 (容斥原理+高精度)

    2024: [SHOI2009] 舞会 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 368  Solved: 102 Description OIto ...

  2. [LuoguP2159][SHOI2009]舞会_动态规划_高精度_排列组合

    舞会 题目链接:https://www.luogu.org/problem/P2159 数据范围:略. 题解: 不会.... 看了题解觉得自己好傻逼啊

  3. 图论 公约数 找环和链 BZOJ [NOI2008 假面舞会]

    BZOJ 1064: [Noi2008]假面舞会 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1655  Solved: 798[Submit][S ...

  4. BZOJ 1064 假面舞会(NOI2008) DFS判环

    此题,回想Sunshinezff学长给我们出的模拟题,原题啊有木有!!此处吐槽Sunshinezff爷出题不人道!! 不过也感谢Sunshinezff学长的帮助,我才能做出来.. 1064: [Noi ...

  5. bzoj 1876 [SDOI2009]SuperGCD(高精度+更相减损)

    1876: [SDOI2009]SuperGCD Time Limit: 4 Sec  Memory Limit: 64 MBSubmit: 2384  Solved: 806[Submit][Sta ...

  6. BZOJ 1263: [SCOI2006]整数划分( 高精度 )

    yy一下发现好像越小越好...分解成3*3*3*3……这种形式是最好的...然后就是高精度了 ----------------------------------------------------- ...

  7. BZOJ 4455: [Zjoi2016]小星星 [容斥原理 树形DP]

    4455: [Zjoi2016]小星星 题意:一个图删掉一些边形成一棵树,告诉你图和树的样子,求让图上的点和树上的点对应起来有多少方案 看了很多题解又想了一段时间,感觉题解都没有很深入,现在大致有了自 ...

  8. BZOJ 3771 Triple FFT+容斥原理

    解析: 这东西其实就是指数型母函数? 所以刚开始读入的值我们都把它前面的系数置为1. 然后其实就是个多项式乘法了. 最大范围显然是读入的值中的最大值乘三,对于本题的话是12W? 用FFT优化的话,达到 ...

  9. bzoj 2839 : 集合计数 容斥原理

    因为要在n个里面选k个,所以我们先枚举选的是哪$k$个,方案数为$C_{n}^k$ 确定选哪k个之后就需要算出集合交集正为好这$k$个的方案数,考虑用容斥原理. 我们还剩下$n-k$个元素,交集至少为 ...

随机推荐

  1. Linux使用Public Key方式远程登录

    一.前言: ssh远程登录密码认证的方式有三种,password.Keyboard Interactive.Public Key 前面两种方式就是密码认证,含义都是一样大同小异.第三种是登录方式最安全 ...

  2. c语言中的堆、栈和内存映射

    Code Area(代码区):程序代码指令.常量字符串,只可读. Static Area(静态区):存放全局变量/常量.静态变量/常量. 该区域的大小在程序一加载进内存的时候就已固定,但是静态变量的值 ...

  3. Linux下gdb的安装及使用入门

    1.安装gdb. 在root用户权限下: root@iZ2zeeailqvwws5dcuivdbZ:~# apt-get update ...... ...... ...... root@iZ2zee ...

  4. Spider_Man_2 の requests模块

    一:自我介绍

  5. 【蓝桥杯单片机02】LED的基本控制

    [蓝桥杯单片机02]LED的基本控制 广东职业技术学院  欧浩源 在CT107D单片机综合训练平台实现LED的基本控制和其他单片机开发平台不一样,不单单是控制几个LED实现跑马灯这么简单.因为在这个平 ...

  6. 【分享】一个集成tracert和ping的网络监测工具

    最近接到一个需求,需求背景是这样的:目前Windows平台下本身都有tracert和ping的实现,而且可以直接在cmd下使用. 需求中有两个要求: 1. Windows平台中的tracert执行速度 ...

  7. 从数据库、代码和服务器对PHP网站Mysql做性能优化

    数据库优化是PHP面试几乎都会被问到的事情,也是我们工作中应该注意的事情,当然,如果是小网站无所谓优化不优化,网站访问量大了自然会暴漏数据库的瓶颈,这个瓶颈是各方面问题综合导致的,下面我们来做下数据库 ...

  8. 常用 Git 命令清单

    http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html 我每天使用 Git ,但是很多命令记不住. 一般来说,日常使用只要记住下图6个命 ...

  9. Appium移动自动化测试之—基于java的iOS环境搭建

    本文仅供参考,同时感谢帮助我搭建环境的同事 操作系统的名称:Mac OS X操作系统的版本:10.12.6 接下来我们开始踏上搭建Appium+java+ios之路,本文只说个大概,毕竟本机已经装过了 ...

  10. File类实现文件夹和文件复制

    package com.jcy.copy; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFou ...