Ex - Group Photo

很牛的题

设\(A_0=A_{n+1}=INF\),那么对于每个\(B_i\)有\(B_i>\min(A_{i-1},A_i)\),所以考虑设\(C_i\)表示\(min(A_{i-1},A_i)\),那么有\(B_i>C_i\),显然,若我们将\(C\)从小到大排序,\(B\)也从小到大排序,那么肯定是一一对应的(即满足\(B_i>C_i\)时合法)

考虑\(C_i=A_i\)时,说明若我们将\(A\)也从小到大排序后挨个放入序列中,有\(A_i\)比\(A_{i-1}\)先放入序列中,所以设\(dp[i][j]\)表示前\(i\)个\(A\)放成了\(j\)个连通块

首先若我们放了了\(i\)个\(A\),形成了\(j\)个连通块,那么一定有\(i+j\)个\(C\)被确定并且一定是前\(i+j\)个\(C\),那么前\(i+j\)个\(C\)就一一对应了前\(i+j\)个\(B\),所以考虑转移:

将第\(A_{i+1}\)放在每个块的首/尾,\(dp[i][j]\times2\times j\rightarrow dp[i+1][j](A_{i+1}<B_{i+j+1})\)

用\(A_{i+1}\)链接两个连通块,\(dp[i][j]\times (j-1)\rightarrow dp[i+1][j-1]\),因为此时\(A_{i+1}\)两边的\(A\)都比\(A_{i+1}\)先加入,所以\(A_{i+1}\)不会产生新的\(C\)

\(A_{i+1}\)单独新建一个块,\(dp[i][j]\times(j+1)\rightarrow dp[i+1][j+1](A_{i+1}<B_{i+j+1}\&\&A_{i+1}<B_{i+j+2})\),因为\(B\)排了序,所以\(B_{i+j+1}<B_{i+j+2}\),所以只需要判断\(A_{i+1}<B_{i+j+1}\)

#include<bits/stdc++.h>
using namespace std;
const int N=5e3+5,MOD=998244353;
int dp[N][N],n,a[N],b[N];
void add(int &x,int y){ x+=y; (x>=MOD)&&(x-=MOD); (x<0)&&(x+=MOD); }
int main(){
scanf("%d",&n);
for(int i=1;i<=n;++i) scanf("%d",&a[i]);
for(int i=1;i<=n+1;++i) scanf("%d",&b[i]);
dp[0][0]=1,sort(a+1,a+n+1),sort(b+1,b+n+2);
for(int i=0;i<n;++i){
for(int j=0;j<=i&&i+j<=n+1;++j){
if(a[i+1]<b[i+j+1]) add(dp[i+1][j],dp[i][j]*2ll%MOD*j%MOD);
if(j>1) add(dp[i+1][j-1],1ll*dp[i][j]*(j-1)%MOD);
if(a[i+1]<b[i+j+1]) add(dp[i+1][j+1],1ll*dp[i][j]*(j+1)%MOD);
}
}
printf("%d",dp[n][1]);
return 0;
}

[abc313 h/ex] Group Photo的更多相关文章

  1. PAT A1109 Group Photo (25 分)——排序

    Formation is very important when taking a group photo. Given the rules of forming K rows with N peop ...

  2. 1109 Group Photo (25 分)

    1109 Group Photo (25 分) Formation is very important when taking a group photo. Given the rules of fo ...

  3. PAT 1109 Group Photo[仿真][难]

    1109 Group Photo(25 分) Formation is very important when taking a group photo. Given the rules of for ...

  4. 1109 Group Photo (25分)

    Formation is very important when taking a group photo. Given the rules of forming K rows with N peop ...

  5. A1109. Group Photo

    Formation is very important when taking a group photo. Given the rules of forming K rows with N peop ...

  6. 1109 Group Photo

    Formation is very important when taking a group photo. Given the rules of forming K rows with N peop ...

  7. 1109. Group Photo (25)

    Formation is very important when taking a group photo. Given the rules of forming K rows with N peop ...

  8. PAT 1109 Group Photo

    Formation is very important when taking a group photo. Given the rules of forming K rows with N peop ...

  9. PAT_A1109#Group Photo

    Source: PAT A1109 Group Photo (25 分) Description: Formation is very important when taking a group ph ...

  10. PAT甲级——A1109 Group Photo【25】

    Formation is very important when taking a group photo. Given the rules of forming K rows with Npeopl ...

随机推荐

  1. Ubuntu更换cuda版本,gcc,g++版本

    Ubuntu更换cuda版本,gcc,g++版本 更换cuda版本 这个比较简单 可以看到 /usr/local下面有一个软链接,更换到我们需要的版本即可,cuda对应版本安装可参考官网. 创建软连接 ...

  2. mvc api 下载文件问题

    背景:前后端分离项目,文件下载 项目中 因为实际文件名和路径里的文件名 不一致(一般路径文件名需要使用唯一名字) 刚开始使用返回链接的方式,会出现图片直接预览,文件名会以路径文件名下载,用户体验不好. ...

  3. 继承的介绍、使用-java se进阶 day01

    1.继承的介绍 2.继承的使用 为什么要使用继承?假如以后要写一个项目,其中程序员一个类,项目经理一个类,Hr一个类,但是这些类的成员都一样 如图 我们会发现这些成员都是重复的,三个类都写重复的成员十 ...

  4. Windows 鼠标右键失效

    突然有一天...小邋遢他变了... 哦不是...鼠标右键/键盘菜单键莫名其妙失效了. 解决办法 运行 regedit 打开注册表编辑器 依次展开 HKEY_CURRENT_USER\Software\ ...

  5. linux中安装firebird

    本在树莓派上安装sqlite,因为sqlite的多用户需要自己控制读写.最终选择稳定够用的fb2.5. 嵌入式无论哪一种fb都差不多. 1.安装 sudo apt-get install firebi ...

  6. <HarmonyOS第一课07>从网络获取数据

    视频链接: https://developer.huawei.com/consumer/cn/training/course/slightMooc/C101717497918284399?ha_sou ...

  7. 15.4K Star!Vercel官方出品,零基础构建企业级AI聊天机器人

    嗨,大家好,我是小华同学,关注我们获得"最新.最全.最优质"开源项目和高效工作学习方法 "基于Next.js 14和AI SDK打造的Chat SDK,让开发者快速构建支 ...

  8. spring综合性利用工具-SpringBoot-Scan(一),附下载链接。

    日常渗透过程中,经常会碰到Spring Boot搭建的微服务,于是就想做一个针对Spring Boot的开源渗透框架,主要用作扫描Spring Boot的敏感信息泄露端点,并可以直接测试Spring的 ...

  9. deepseek+coze实战:一键抓取百条抖音爆款视频,自动存入飞书表格

    大家好,我是汤师爷~ 批量获取抖音视频文案这件事,一直有技术门槛. 很多朋友因为不懂技术,只能花钱买工具来完成这项任务. 今天我要分享一个Coze智能体的解决方案 只需输入关键词就能自动批量获取视频文 ...

  10. 数字孪生工厂实战指南:基于Unreal Engine/Omniverse的虚实同步系统开发

    引言:工业元宇宙的基石技术 在智能制造2025与工业元宇宙的交汇点,数字孪生技术正重塑传统制造业.本文将手把手指导您构建基于Unreal Engine 5.4与NVIDIA Omniverse的实时数 ...