[AGC024E] Sequence Growing Hard 题解

news/2025/10/28 23:37:31/文章来源:https://www.cnblogs.com/MoyouSayuki/p/19172955

[AGC024E] Sequence Growing Hard 题解

首先手玩一下样例,考虑在哪些位置插入是合法,假设在 \(pos\) 位置前插入 \(x\),则如果 \(x > a_{pos}\),则显然字典序会变大,否则如果 \(a_{pos} = x\) 需要找到 \(pos\) 位置之后第一个不为 \(x\) 的位置,假设该位置为 \(t\),则如果 \(x > a_t\),那么字典序会变大。

考虑一段连续的由相同数字组成的子串,那么无论在其中哪个位置插入,最后序列的结果都是一样的,所以我们简化一下合法位置的条件,不妨钦定只能在连续段最后一个数后插入,那么只需要满足 \(x > a_{pos}\) 就行了。

进一步观察,发现对于同一个 \(A\),在不同的合法位置插入一个数,得到的序列 \(A'\) 都是不一样的,这启发我们只需要计数不同的插入方案数,而不是不同的序列组方案数。

观察不断插入的过程,每一次都在一个数前面插入,可以被看作一个建树的过程,其中每一个节点都是一个序列元素,上文中插入 \((x, pos)\) 的时候,认为 \(a_{pos}\)\(x\) 的父亲。

一棵操作树的每一个拓扑序对应了一个插入方案,那么不同的插入方案数等价于:所有可能的操作树的拓扑序个数之和。

设 DP 状态 \(f_{i, j}\) 表示对于所有大小为 \(i\) 的树,根节点权值为 \(j\) 拓扑序个数之和,转移枚举第一个访问的子树的子树大小 \(l\),那么该子树内点的拓扑序 独立于 外面点的拓扑序,用组合数分配这些遍历顺序。

具体而言,子树内的贡献是 \(\sum_{k > j} f_{l, k}\),子树外的贡献是 \(f_{i - l, j}\),遍历顺序的分配的系数是 \(\binom{i - 2}{l - 1}\)

时间复杂度:\(O(n^3)\)

#include <iostream>
#include <cstring>
#include <algorithm>
#include <queue>
#include <ctime>
#define int long long
#define x first
#define y second
using namespace std;
typedef pair<int, int> PII;
typedef long double ld;
const int N = 300 + 10;int n, k, mod, f[N][N], s[N][N], C[N][N];signed main() {ios::sync_with_stdio(0), cin.tie(0);cin >> n >> k >> mod;for(int i = 0; i <= k; i ++) f[1][i] = 1, s[1][i] = k - i + 1;C[0][0] = 1;for(int i = 1, j; i <= n; i ++)for(j = 1, C[i][0] = 1; j <= i; j ++)C[i][j] = (C[i - 1][j - 1] + C[i - 1][j]) % mod;for(int i = 2; i <= n + 1; i ++) {for(int j = 0; j <= k; j ++) {for(int l = 1; l < i; l ++) {f[i][j] = (f[i][j] + C[i - 2][l - 1] * f[i - l][j] % mod * s[l][j + 1]) % mod;}}for(int j = k; j >= 0; j --) s[i][j] = (s[i][j + 1] + f[i][j]) % mod;}cout << f[n + 1][0] << '\n';return 0;
}

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

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

相关文章

新学期每日总结(第15天)

今日 相较昨日 学习下载数据库

实验2 现代C++编程初体验

任务1 源代码 T.h#pragma once#include <string>// 类T: 声明 class T { // 对象属性、方法 public:T(int x = 0, int y = 0); // 普通构造函数T(const T &t); // 复制构造函数T(T &&t); /…

P7154 [USACO20DEC] Sleeping Cows P 题解

QwQP7154 [USACO20DEC] Sleeping Cows P 题解 把 \(s, t\) 升序排序。 容易发现每一个 \(t_i\) 可匹配的 \(s_j\) 对应了一个前缀。 考虑刻画极大匹配,一个匹配是极大的当且仅当最大的没有被匹配的 \(t\) 小于最小的没…

Java流程控制——switch多选择结构

Java流程控制——switch多选择结构swtich多选择语句 多选择结构的另一实现方式为switch-case语句 switch-case语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支 基本结构示例 switch(expression){case…

P3607 [USACO17JAN] Subsequence Reversal P 题解

好题P3607 [USACO17JAN] Subsequence Reversal P 题解 如果我们顺序对翻转的子序列做 DP,那么在末尾新增一个数会影响前面所有数的交换对应关系。 思考这个翻转的结构,前后对应的数交换,如果我们同时加入前后两个对…

示性函数2

Problem 设有一个大小为 $ n $ 的集合,进行 $ n $ 次操作,每次从集合中随机选取一个元素并记录之,求所有操作结束后,所记录的元素中互不相同的元素的个数的期望 $ E(X) $。分析 通常示性函数在应用与解决此类问题时…

随笔/杂记

随便写写记记 罗素茶壶:一个主张的不可证伪性,并不能成为相信它的理由。

k3s 基础 —— 将 traefik 替换为 ingress-nginx

k3s 基础 —— 将 traefik 替换为 ingress-nginx部署 创建 ingress-nginx.yaml apiVersion: helm.cattle.io/v1 kind: HelmChart metadata:name: ingress-nginxnamespace: kube-system spec:chart: https://<yourcd…

使用 Swift 解析验证码(结合 Tesseract OCR)

环境准备 1.1 安装 SwiftmacOS 自带 Swift,如需更新,可使用: xcode-select --install 更多内容访问ttocr.com或联系1436423940 然后检查 Swift 版本: swift --version Linux 用户可以从 Swift 官方网站 下载对应版…

常见排序算法Java实现

/**常见排序算法汇总 */ public class SortAlgorithms { /**冒泡排序(Bubble Sort) 思想:相邻元素两两比较,大的往后沉。 时间复杂度:O(n^2) 稳定性:稳定 */ public static void bubbleSort(int[] arr) { for (i…

题解:qoj1875 Nein

题意:给出 \(k,n\),问第 \(n\) 个是 \(10^k-1\) 的倍数的且每个数字不含有 \(9\) 的数是多少。\(k\le 18,n\le 10^{18}\)。 做法: 首先先跳出一个很显然的想法,一开始看这个东西觉得应该是拆成 \(x10^k-x\) 去讨论…

【uni-app】申请高德地图key,封装map.js,实现H5、iOS、Android通过getlocation获取地图定位信息(摘)

一、map组件基础使用<template><view class="contact"><image class="img" :src="formData.headImg"></image><view class="info"><view @…

.NET开发上手Microsoft Agent Framework(一)从开发一个AI美女聊天群组开始

前言 在AI快速发展的今天,微软推出了多个AI开发框架,从早期的AutoGen到Semantic Kernel,再到最新的Microsoft Agent Framework。很多开发者可能会有疑问:为什么微软要推出这么多框架?它们之间有什么区别?本文将通…

10/28

10/28今天在工程实训里学习了金属工艺加工,学习了java的相关网课

大学四年的学费/生活费自足攻略

1997年夏天带着通过亲戚朋友筹集的学费4000元踏上了北上兰州的旅程。我独自一人第一次穿越3000公里来到兰州,办好入学手续住进宿舍。虽然没有政和的老乡,但是有几位南平的老乡来找我,特别是建瓯话和政和话是一样的,…

175天 隧道技术篇防火墙组策略FRPNPSChiselSocks代理端口映射C2上线

三种工具 frp/NPS/Chisel 不用过多的纠结去使用哪一款工具 frp的C2上线 解决的问题: 1.C2上线 2.实现信息收集(两个) 这边可以使用CS生成一个47.xx.xx.xx的后门,然后搭建frp后,进行上线 下面相当于是把端口映射出…

10.28每日总结

今天的主要课程有人机交互技术,软件构造,软件企业文化。完成了上周机器学习的作业以及企业文化的报告,软考准备开始专精刷题里,加油!

102302126李坤铭作业1

作业1 用requests和BeautifulSoup库方法定向爬取给定网址(http://www.shanghairanking.cn/rankings/bcur/2020 )的数据,屏幕打印爬取的大学排名信息。 1)代码: 点击查看代码 import requests from bs4 import Bea…