当前位置: 首页 > news >正文

Luogu P13925 [POKATT 2024] 联合猫国 / The Paw-litical Game 题解 [ 蓝 ] [ 线性 DP ] [ 种类数观察 ]

联合猫国

去年模拟赛做过一道几乎一模一样的题,于是一眼秒了。

本题的一个结论:最终可合并的区间数为 \(\bm{O(n\log n)}\) 级别

证明可以考虑构造出可合并区间数最多的序列,显然是所有数都相同时的区间数,可以取到上界 \(n\log n\)。其余构造方式,例如构造一个 \(n, n - 1, n - 2, \cdots, 1, 1\) 的序列,一段最多只能产生 \(n\) 个可合并区间,显然是无法取到上界的。

因此后面的就是简单的了。注意到当一个数的增量确定时,合并的左端点也随之确定,因此可以用 vector 存每个数增量为 \(\bm x\)合并的左端点。因为可合并区间数是 \(O(n\log n)\) 级别的,因此暴力跳就可以了。

最后从每个可合并的左端点处转移,做一个线性 DP 即可。总体时间复杂度 \(O(n\log n)\)

#include <bits/stdc++.h>
#define fi first
#define se second
#define eb(x) emplace_back(x)
#define pb(x) push_back(x)
#define lc(x) (tr[x].ls)
#define rc(x) (tr[x].rs)
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef long double ldb;
using pi = pair<int, int>;
const int N = 1000005;
int n, a[N], dp[N];
vector<int> f[N];
int main()
{//freopen("sample.in", "r", stdin);//freopen("sample.out", "w", stdout);ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin >> n;memset(dp, 0x3f, sizeof(dp));dp[0] = 0;for(int i = 1; i <= n; i++){cin >> a[i];f[i].push_back(i - 1);dp[i] = min(dp[i], dp[i - 1] + 1);int now = i - 1, val = a[i];while(val - a[now] >= 0 && val - a[now] < f[now].size()){now = f[now][val - a[now]];val++;dp[i] = min(dp[i], dp[now] + 1);f[i].push_back(now);}}cout << dp[n];return 0;
}
http://www.jsqmd.com/news/24939/

相关文章:

  • 深入解析:【STM32项目开源】基于STM32的独居老人监护系统
  • CSP-S 41多校 9
  • 【25.10.28】模拟赛
  • CSP-S模拟41
  • Linux双中文编码笔记
  • C++类和对象(1) - 详解
  • 人工智能之编程基础 Python 入门:第二章 Python 的编辑器 VS Code
  • 2019 福建省队集训录
  • AIX multibos bootlist
  • 记录一次nginx能通但是请求一直不了的问题
  • 【嵌入式】PWM DAC的滤波器设计
  • 被称作遗憾之物 爬满了脊骨 又把控了痛楚 被称作无用之物 修筑了唯一的通路
  • neovim在windwos11下snack.nvim的问题
  • 完整教程:Java 集合 “List + Set”面试清单(含超通俗生活案例与深度理解)
  • 禁用 IPython 历史记录 history.sqlite
  • Luogu P7914 [CSP-S 2021] 括号序列 题解 [ 蓝 ] [ 区间 DP ] [ 前缀和优化 ] [ 调试技巧 ]
  • 扩展BaseMapper类 - 详解
  • 《程序员修炼之道:从小工到专家》前五分之二观后感
  • 矩阵快速幂章节笔记(这里主要介绍的是我的错题)
  • 实验二 现代C++编程初体验
  • P5322 [BJOI2019] 排兵布阵
  • 题解:P9292 [ROI 2018] Robomarathon
  • [题解]P5322 [BJOI2019] 排兵布阵
  • 考前打印
  • 申威服务器安装Nacos 2.0.3 RPM包详细步骤(Kylin V10 sw_64架构)​附安装包
  • ZKY精选冲刺省选国赛仿真训练题
  • MySQL 查询与更新语句执行过程深度解析:从原理到实践​ - 指南
  • ZKY精选冲刺省选国赛技巧训练题
  • 逆向基础--编码(001)
  • 20251027 - 倍增 ST表