[BZOJ 3622]已经没有什么好害怕的了(Dp+容斥原理)
Description
图片略
Solution
对啊,已经没有什么好害怕的了
没有头的麻美学姐还是很萌的(雾
排序预处理p[i]为b中小于a[i]的最大的数的标号
f[i][j]表示前i个糖果使得糖果大于药片的至少有j组
则f[i][j]=f[i-1][j]+f[i-1][j-1]*(p[i]-j+1)
容斥得g[j]=f[n][j]*(n-j)!-∑g[k]*C(j,k) (j+1<=k<=n)
(Update:今天发现这个好像是广义容斥原理?)
#include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<algorithm> #define MAXN 2002 #define Mod 1000000009 typedef long long LL; using namespace std; int n,k,a[MAXN],b[MAXN],p[MAXN]; LL f[MAXN][MAXN],c[MAXN][MAXN],g[MAXN]; int read() {int x=0,f=1;char c=getchar();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; } int main() {n=read(),k=read();if((n+k)%2){printf("0");return 0;}k=(n+k)/2;for(int i=1;i<=n;i++)a[i]=read();for(int i=1;i<=n;i++)b[i]=read();sort(a+1,a+1+n);sort(b+1,b+1+n);int t=1;for(int i=1;i<=n;i++){while(a[i]>b[t]&&t<=n)t++;p[i]=t-1;}f[0][0]=1;for(int i=1;i<=n;i++)for(int j=0;j<=i;j++){if(j)f[i][j]=(f[i-1][j-1]*max(0,p[i]-j+1))%Mod;f[i][j]=(f[i][j]+f[i-1][j])%Mod;}c[1][0]=1;c[1][1]=1;for(int i=2;i<=n;i++)for(int j=0;j<=i;j++){if(!j)c[i][j]=1;c[i][j]=(c[i-1][j-1]+c[i-1][j])%Mod;}for(int i=n;i>=k;i--){g[i]=f[n][i];for(int j=1;j<=n-i;j++)g[i]=(g[i]*j)%Mod;for(int j=i+1;j<=n;j++){g[i]=(g[i]-(g[j]*c[j][i])%Mod+Mod)%Mod;}}printf("%d",g[k]);return 0; }
转载于:https://www.cnblogs.com/Zars19/p/6706723.html
[BZOJ 3622]已经没有什么好害怕的了(Dp+容斥原理)相关推荐
- BZOJ 3622 Luogu P4859 已经没有什么好害怕的了 (容斥原理、DP)
题目链接 (Luogu) https://www.luogu.org/problem/P4859 (bzoj) https://www.lydsy.com/JudgeOnline/problem.ph ...
- BZOJ 2281 Luogu P2490 [SDOI2011]黑白棋 (博弈论、DP计数)
怎么SDOI2011和SDOI2019的两道题这么像啊..(虽然并不完全一样) 题目链接: (bzoj) https://www.lydsy.com/JudgeOnline/problem.php?i ...
- BZOJ 4032 luogu P4112 [HEOI2015]最短不公共子串 (DP、后缀自动机)
这其实是道水题... 题目链接: (bzoj)https://www.lydsy.com/JudgeOnline/problem.php?id=4032 (luogu)https://www.luog ...
- bzoj 4455: [Zjoi2016]小星星 树形dp+容斥原理
题意 给出一棵树和一个图,问有多少种方法把树的节点标号使得其在改图中至少有一棵生成树与原来的树是重构的. n<=17 分析 想到了容斥,但是没想到从哪里容斥... 显然题目给了两个限制,一个是原 ...
- bzoj 4813: [Cqoi2017]小Q的棋盘【树形dp】
这么简单的dp我怎么没想到x2 f为从这个点出发后回到这个点最多能走过的点,g为从这个点出发后不回到这个点最多能走过的点,注意g有两种转移:g[u][k]=max(g[u][k],f[u][k-j-1 ...
- 【BZOJ】1003: [ZJOI2006]物流运输trans(SPFA+DP)
http://www.lydsy.com/JudgeOnline/problem.php?id=1003 这题一开始看是不会的额,,,还是看题解了..一开始我觉得不能用最短路啥的,,看了题解发现这是d ...
- BZOJ 1492: [NOI2007]货币兑换Cash [CDQ分治 斜率优化DP]
传送门 题意:不想写... 扔链接就跑 好吧我回来了 首先发现每次兑换一定是全部兑换,因为你兑换说明有利可图,是为了后面的某一天两种卷的汇率差别明显而兑换 那么一定拿全利啊,一定比多天的组合好 $f[ ...
- 【BZOJ】1630: [Usaco2007 Demo]Ant Counting(裸dp/dp/生成函数)
http://www.lydsy.com/JudgeOnline/problem.php?id=1630 题意,给你n种数,数量为m个,求所有的数组成的集合选长度l-r的个数 后两者待会写.. 裸dp ...
- bzoj 1705: [Usaco2007 Nov]Telephone Wire 架设电话线【dp】
i的初始化写成2了于是成功查错2h--怕不是个傻子 设f[i][j]为第i根高为j,转移是 \[ f[i][j]=min(f[i-1][k]+abs(k-j)*c+(j-h[i])^2)(j>= ...
- BZOJ 3925 [Zjoi2015]地震后的幻想乡 ——期望DP
我们只需要考虑$\sum F(x)P(x)$的和, $F(x)$表示第x大边的期望,$P(x)$表示最大为x的概率. 经过一番化简得到$ans=\frac{\sum T(x-1)}{m+1}$ 所以就 ...
最新文章
- 热门的模型跨界,Transformer、GPT做CV任务一文大盘点
- android one x3怎么样,618旗舰手机怎么选,看完这篇文章,你就会知道
- 用python编写表达式求值_用Python3实现表达式求值
- java数据库配置_java--数据库(文件配置连接,自定义连接池)
- 高效能人士的七个习惯_有史以来最具影响力管理类书籍 高效能人士的七个习惯 让你成为一名成功高效的人士...
- 利用HBuilderX制作手机APP应用程序之知识问答
- mysql 事件的作用_MySQL 事件
- CCF201809-3 元素选择器(100分)【文本处理】
- 获取网页中的验证码图片
- 「POI2012」约会 Rendezvous
- 案例详解:理解Python中的“解析式”
- 【Excel】Excel读取数据时,提示“服务器连接异常”
- 计算机硬盘从盘的设置,双硬盘怎么设置主从盘 电脑双硬盘设置主从教程
- 鲲鹏920是计算机CPU吗,华为鲲鹏920
- 2021 长安杯 Re
- ubuntu 1204 server xp 硬盘安装
- react中ref使用方法解析
- zlib流压缩--字符串
- python地图可视化前端页面展示_利用pyecharts实现地图可视化
- 【愚公系列】2023年02月 WMS智能仓储系统-012.登录功能的实现