AT_joisc2012_kangaroo

news/2024/11/16 12:12:54/文章来源:https://www.cnblogs.com/SFlyer/p/18549242

\(\mathcal{O}(n^3)\) 方法就不再赘述(前 \(i\) 个,\(j\) 条链,\(k\) 个不满足)。

考虑 \(a,b\) 分开来排序,从小到大,如果相同先排 \(b\)。比如说 3 22 1 排成 1 2(b) 2(a) 3\(a\) 写成 )\(b\) 写成 (,就是 (())。那么现在问题变成了:一个袋鼠可以塞进另一个袋鼠就是两个括号严格在前面,塞完了不能还有没有被塞的可以塞前面的括号。

发现合不合法只和最靠前的没有被塞的括号有关。设 \(dp_{i,j,0/1}\) 为前 \(i\) 个括号(一共 \(2n\) 个),还有 \(j\) 个要被塞,现在有没有出现“没有被塞”这个情况了。因为是排好序的,所以后面的 ( 一定可以塞得下前面的 )。分情况转移:

  • 如果是 )。那么我们可以决定钦不钦定是不是没有被塞,那么 \(dp_{i,j+1,k}+=dp_{i-1,j,k}\)\(dp_{i,j,1}+=dp_{i,j,k}\)
  • 如果是 (。只有在 \(k=0\) 的之后我才可以不塞东西。因此 \(dp_{i,j-1,0/1}+=dp_{i-1,j,0/1}\times j\)(选择哪个塞),和 \(dp_{i,j,0}+=dp_{i-1,j,0}\)

因此得到一个 \(\mathcal{O}(n^2)\) 的算法。

#include <bits/stdc++.h>using namespace std;using ll = long long;const int N = 5e3+3;
const ll mod = 1e9+7;ll n,dp[N][2],f[N][2];
vector<pair<int,int> > p;int main(){ios::sync_with_stdio(false);cin.tie(0);cin>>n;for (int i=1; i<=n; i++){int a,b;cin>>a>>b;p.push_back({a,1});p.push_back({b,0});}sort(p.begin(),p.end());dp[0][0]=1;for (int i=1; i<=n*2; i++){for (int j=0; j<=n; j++){f[j][0]=dp[j][0],f[j][1]=dp[j][1];dp[j][0]=dp[j][1]=0;}if (p[i-1].second){for (int j=0; j<=n; j++){for (int k=0; k<2; k++){dp[j+1][k]=(dp[j+1][k]+f[j][k])%mod;dp[j][1]=(dp[j][1]+f[j][k])%mod;}}}else{for (int j=0; j<=n; j++){for (int k=0; k<2; k++){if (j) dp[j-1][k]=(dp[j-1][k]+f[j][k]*j%mod)%mod;}dp[j][0]=(dp[j][0]+f[j][0])%mod;}}}cout<<dp[0][1]<<endl;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/834536.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[网鼎杯 2018]Fakebook 1

[网鼎杯 2018]Fakebook 1 打开实例发现为博客列表,有登录跳转和类似注册或者添加博客的join跳转查看源码无果 打开登陆页,尝试万能密码没有用,尝试从join入手,用admin去随便join一个显示博客不存在 期间尝试多种sql注入方法均没有效果,转去其他方向 尝试dirsearch目录爆破…

【Adobe Premiere pro 2025下载与安装教程】

1、安装包「Adobe Premiere Pro 2025」: 链接:https://pan.quark.cn/s/e93beb96accb 提取码:CGY2 2、安装教程 1) 下载软件安装包,打开安装目录,双击Setup.exe安装,弹出安装对话框2) 选择安装目录,尽量不要选C盘,点击继续3) 等待安装过程完成,点…

人工智能同样也会读死书----“过拟合”

上一篇:《“嵌入”在大语言模型中是解决把句子转换成向量表示的技术》 序言:我们常常会说某某人只会“读死书”,题目稍微变一点就不会做了。这其实是我们人类学习中很常见的现象。可是你知道吗?人工智能其实更容易“读死书”。不过在人工智能领域,我们有个听起来高大上的说…

D45XT80-ASEMI电机专用整流桥D45XT80

D45XT80-ASEMI电机专用整流桥D45XT80编辑:ll D45XT80-ASEMI电机专用整流桥D45XT80 型号:D45XT80 品牌:ASEMI 封装:DXT-5 特性:插件桥堆 正向电流:45A 反向耐压:800V 恢复时间:>2000ns 引脚数量:5 芯片个数:4 芯片尺寸:50MIL 浪涌电流:450A 漏电流:>10uA 工作温…

【Adobe Acrobat pro 2024软件下载与安装教程-PDF编辑神奇】

1、安装包 「Adobe Acrobat 2024」: 链接:https://pan.quark.cn/s/86f8683afe5c 提取码:4uur 2、安装教程(建议关闭杀毒软件和系统防护) 1) 下载软件安装包,打开安装目录,双击Setup.exe安装,弹出安装对话框2) 点击安装按钮3) 正在安装4) 安装…

书生共学大模型训练营第4期 L1G200任务提交

MindSearch搜索引擎示例书生浦语对话模型调用示例书生万象开源视觉语言模型调用实例进阶任务:MindSearch话题挑战 https://www.zhihu.com/people/zhang-shu-yang-92-96

使用nvm管理多版本node的详细教程

在开发工作中,经常在不同的项目中使用不同版本的node去开发,换一个项目在重新安装node太麻烦,所以使用nvm来管理多版本的node开发环境,就非常方便了,所以本文给大家介绍了如何使用nvm管理多版本node,需要的朋友可以参考下前言 在开发工作中,经常在不同的项目中使用不同版本的n…

Metasploit Pro 4.22.5-2024111401 (Linux, Windows) - 专业渗透测试框架

Metasploit Pro 4.22.5-2024111401 (Linux, Windows) - 专业渗透测试框架Metasploit Pro 4.22.5-2024111401 (Linux, Windows) - 专业渗透测试框架 Rapid7 Penetration testing, released Nov 14, 2024 请访问原文链接:https://sysin.org/blog/metasploit-pro-4/ 查看最新版。…

.ts文件和d.ts文件对比

TS中有俩种文件类型,一种是.ts文件,一种是.d.ts文件 .ts文件 既可以包含类型信息也可以写逻辑代码 可以被编译为js文件 .d.ts文件 只能包含类型信息不可以写逻辑代码 不会被编译为js文件,仅做类型校验检查 自定义类型声明文件 d.ts文件在项目中是可以进行自定义创建的,通常…

Ubuntu Server 20.04 安装MySQL

1. 通过apt安装MySQL1 #命令1 2 sudo apt-get update 3 #命令2 4 sudo apt-get install mysql-server2. 配置mysql初始化信息1 sudo mysql_secure_installation配置说明:ubuntu@VM-0-10-ubuntu:~$ sudo mysql_secure_installationSecuring the MySQL server deployment.Connec…

【Adobe Photoshop 2025下载与安装】

‌Photoshop 2025的安装环境要求主要包括操作系统、处理器、内存、显卡、显示器分辨率和硬盘空间等方面的具体要求。‌ 操作系统要求‌Windows‌:支持Windows 10(版本21H2)或更高版本,不支持Windows的长期服务版(LTSC)。处理器要求‌Windows‌:支持64位的多核Intel或AMD…

IPEX几代接口的区别

IPEX共分五代,简单判别IPEX接口是几代的方法是测量直径。 IPEX 1代 高度小于3.0mm,端子口径φ2.0 IPEX 2代 高度小于2.1mm,端子口径φ2.0 IPEX 3代 高度小于1.6mm,端子口径φ1.4 IPEX 4代 高度小于1.7mm,端子口径φ1.5 IPEX 5代 高度小于1.3mm,…