正题

P7154


题目大意

有n头牛和n个牛棚,每头牛可以进入体积大于等于该牛的牛棚,当一个所有未进入牛棚的牛都不能再进时,称为极大的匹配,问你有多少种极大的匹配


解题思路

先把牛棚和牛放到一起,然后按体积排序

那么考虑DP

如果一个牛棚没有选,那么后面的牛必须全部匹配,否则该牛棚可以与其匹配

对于一头牛,如果不是必须匹配,那前面的牛棚就全选了,该牛就可选可不选,否则必须选

那么设fi,j,1/0f_{i,j,1/0}fi,j,1/0​表示前i个单位,还有j个牛棚,后面的牛必须选/不一定要选的方案数,然后DP即可


code

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define ll long long
#define wyc 1000000007
#define N 3030
using namespace std;
int n,now,f[N<<1][N][2];
struct node
{int s,v;
}a[N<<1];
bool cmp(node x,node y)
{return x.s>y.s||x.s==y.s&&x.v>y.v;
}
int main()
{scanf("%d",&n);for(int i=1;i<=n;++i){scanf("%d",&a[i].s);a[i].v=0;}for(int i=n+1;i<=n*2;++i){scanf("%d",&a[i].s);a[i].v=1;}sort(a+1,a+1+n*2,cmp);now=0;f[0][0][0]=1;for(int i=1;i<=n*2;++i){if(!a[i].v){for(int j=0;j<=now;++j){(f[i][j][0]+=f[i-1][j][0])%=wyc;;//可以不选if(j){(f[i][j-1][0]+=1ll*f[i-1][j][0]*j%wyc)%=wyc;//也可以选(f[i][j-1][1]+=1ll*f[i-1][j][1]*j%wyc)%=wyc;//必须选}}}else{for(int j=0;j<=now;++j){(f[i][j][1]+=(f[i-1][j][0]+f[i-1][j][1])%wyc)%=wyc;//不选(f[i][j+1][0]+=f[i-1][j][0])%=wyc;(f[i][j+1][1]+=f[i-1][j][1])%=wyc;}now++;}}printf("%d",(f[n*2][0][0]+f[n*2][0][1])%wyc);return 0;
}

【DP】Sleeping Cows P(P7154)相关推荐

  1. 【DP】Bovine Genetics G(P7152)

    正题 P7152 题目大意 对于一个原串(只有四种字符),先将所有相邻且相同的字符分割开,对分割得到的若干段翻转,得到编辑后的字符串,现在给出编辑后的字符串(有一些位置不确定),问你有多少种符合的原串 ...

  2. 【DP】Mod Mod Mod(CF889E)

    正题 CF889E luogu 题目大意 给你 n 个数,让你选择一个X,使得 ∑i=1nXmoda1moda2...modai\sum_{i=1}^nX\mod a_1\mod a_2...\mod ...

  3. 【BZOJ1831】[AHOI2008]逆序对(动态规划)

    [BZOJ1831][AHOI2008]逆序对(动态规划) 题面 BZOJ 洛谷 题解 显然填入的数拎出来是不降的. 那么就可以直接大力\(dp\). 设\(f[i][j]\)表示当前填到了\(i\) ...

  4. 【GPT4】微软 GPT-4 测试报告(3)GPT4 的编程能力

    欢迎关注[youcans的GPT学习笔记]原创作品,火热更新中 微软 GPT-4 测试报告(1)总体介绍 微软 GPT-4 测试报告(2)多模态与跨学科能力 微软 GPT-4 测试报告(3)GPT4 ...

  5. 是男人就下100层【第四层】——Crazy贪吃蛇(2)

    在上一篇<是男人就下100层[第四层]--Crazy贪吃蛇(1)>中我们让贪吃蛇移动了起来,接下来我们来实现让贪吃蛇能够绕着手机屏幕边线移动而且能够改变方向 一.加入状态并改动代码 首先我 ...

  6. 【Android】Parse开发笔记(1)—— 准备

    一.简介 Parse是由 YC 孵化出来的.专为移动应用提供后台服务的云计算平台,为开发者包办繁琐的后台服务,让开发者只需专注于具体的开发工作.它提供任意数据保存.照片或其它文件存储.发送推送通知.创 ...

  7. 【 MATLAB 】DFT性质讨论(一)线性、循环反转、共轭与实序列的对称性的MATLAB实现

    上篇博文通过在理论上讨论了DFT的三个性质:[ MATLAB ]DFT性质讨论(一)线性.循环反转与共轭 分别讨论: 一.线性 给出一个例子,给出x1和x2,x3 = 0.3*x1+0.8*x2; 之 ...

  8. linux 进程间通信 dbus-glib【实例】详解四(上) C库 dbus-glib 使用(附代码)(编写接口描述文件.xml,dbus-binding-tool工具生成绑定文件)(列集散集函数)

    linux 进程间通信 dbus-glib[实例]详解一(附代码)(d-feet工具使用) linux 进程间通信 dbus-glib[实例]详解二(上) 消息和消息总线(附代码) linux 进程间 ...

  9. linux 进程间通信 dbus-glib【实例】详解二(下) 消息和消息总线(ListActivatableNames和服务器的自动启动)(附代码)

    linux 进程间通信 dbus-glib[实例]详解一(附代码)(d-feet工具使用) linux 进程间通信 dbus-glib[实例]详解二(上) 消息和消息总线(附代码) linux 进程间 ...

最新文章

  1. mysql/mariadb centos7 修改root用户密码及配置参数
  2. Spring中的循环依赖及解决,2021Java精选面试实战总结整理
  3. 【Paper】An Experiment Comparing Double Exponential Smoothing and Kalman Filter-Based Predict
  4. Linux内核编译和运行
  5. python解析xml+得到pascal voc xml格式用于目标检测+美化xml
  6. 2020将至,谈谈中小企业创业的那些事儿
  7. 实践 Ubuntu 10.10/11.04 关闭双显卡问题
  8. 【BZOJ2221】面试的考验,随机数列+线段树+离线
  9. 2022年第十四届电工杯赛题分析
  10. 【rmzt】美女之目露凶光win7主题
  11. Java爬取彼岸桌面壁纸的实现(使用Jsoup)
  12. ClickHouse 之 FORMAT 应用
  13. 【Pygame实战】俄罗斯方块 | 太好玩了~停不下来,这种版本(Turtle彩版)你肯定没玩过……(经典怀旧:无人不知的俄罗斯方块)
  14. GPS定位轨迹抽稀之道格拉斯-普克(Douglas-Peuker)算法详解
  15. 好玩的Python库tqdm
  16. Python编程从入门到实践:动手试一试8-3T恤
  17. 单片机课程设计:基于STM32的温湿度检监测报警系统的设计
  18. TM1638模块驱动(stm32,可以显示led灯,数码管,按键操作)(包含全部功能)
  19. 申请支付宝H5接口教程(免签约支付)
  20. 假设R1、R2、R3采用RIP协议交换路由信息,且均已收敛。若R3检测到网络201.1.2.0/25不可达,并向R2通告一次新的距离向量,则R2更新后,其到达该网络的距离是

热门文章

  1. 顺丰gis产品经理_线上面试季丰图科技—顺丰旗下专注GIS领域
  2. Linux网络模块全局变量,()不是Linux系统的特色.
  3. jax rs mysql_Jersey / JAX-RS ExceptionMapper MySQL
  4. 数据科学与python语言——Matplotlib数据可视化基础
  5. hbase shell远程连接_hbase与phoenix集成
  6. C++实现拓扑排序(邻接表存储,栈实现)
  7. [剑指offer]面试题3:二维数组中的查找
  8. [蓝桥杯2015初赛]生命之树-求树的最大子树权值和
  9. SpringBoot项目新手——问题疑惑及解决笔记
  10. 数据结构与算法--数组中的逆序对