24.9.7 sol

news/2024/10/8 13:55:47/文章来源:https://www.cnblogs.com/Jack-YT/p/18404281

T1 捏捏

这个题才是签到题。

右边为逆序对总数。为左边的值找一个具体意义,我们将证明这个值不大于等号右边的值。

考虑冒泡排序,右边即冒泡排序交换的次数(每交换一次一定减少一个逆序对)。左边一定不大于冒泡排序交换次数,因为左边的值只考虑了复原需要向左移动的数,而未考虑向右移动的数。更具体的是左边就是冒泡排序交换次数的下界。

观察何时不能达到下界。如果一个数既往右边移动又往左边移动即无法到达下界。所以如果有类似于 3 2 1 这样的子序列一定不合法,也即如果存在长度为 \(3\) 的下降子序列即不合法(这里已经可以推导出 DP 定义)。

也可以考虑动态地向后加入数,计算两边的增量,分类讨论:

  • \(a_i \geq i\):此时 \(a_i\) 为前 \(i\) 个数的最大值,因为 \(a_i - i\) 表示 \(i\) 之后有 \(a_i-i\) 个比 \(a_i\) 小的数,那前 \(i\) 个数一定都不大于 \(a_i\)
  • \(a_i \leq i\)\(\max(0.i-a_i) = 0\),那就说明后面没有比 \(a_i\) 更小的数,满足 \(1 \sim a_i\) 全部出现。

那么加入的 \(a_i\) 要么是新的前缀最大值,要么更小的数已经全部出现过。

可以得到一个 \(O(n^2)\) 的转移,定义 \(f_{i,j}\) 表示前 \(i\) 个数中最大值为 \(j\),每次要么选一个更大的数,要么补一个唯一合法的数。这个转移可以放到网格图上考虑。

那么剩下的工作是处理不同的前缀。记 \(u=n-m,v=n-\max a_i\),答案为:

\[\dbinom{u+v}{v} - \dbinom{u+v}{v-1} \]

需要一些方法判断前缀是否合法,这个是容易的。

T2 太空沙

首先添加超源超汇并且令其不会被删除使图弱连通,不影响答案,并且入度/出度为 0 的点唯一了。

先对这个拓扑图跑一个拓扑序,点 \(i\) 的拓扑序为 \(p_i\)。然后记录超源到点 \(i\) 的最长距离 \(f_i\),点 \(i\) 到超汇的最长距离 \(g_i\)

对于一条边 \(u \to v\),删去拓扑序在 \([p_u+1,p_v-1]\) 的点不影响经过这条边的最长路径,这条路径的长度为 \(f_u+g_v+1\)

那么问题变成了区间取 \(\max\) 全局求 \(\min\),线段树维护即可。

T3 亦爱门优

先考虑暴力判断一个子段是否合法。令星星的维数从 \(0\) 编号。

枚举 \(0 \sim k-1\) 的排列 \(p\)\(p_i\) 表示现在已经确定了点 \(P\) 的第 \(p_0,p_1,\cdots ,p_{i-1}\) 维,如果当前星星加入后不合法,就用这个星星的第 \(p_i\) 维来确定点 \(P\) 的第 \(p_i\) 维。

如果所有星星都能够被加入,那么这个子段合法。这样可以做到 \(O(n^2k!)\)

然后考虑 DP。从第 \(i\) 颗星星开始用排列 \(p\) 进行匹配,定义 \(f_{i,p,j}\) 表示点 \(P\) 的第 \(p_j\) 维第一次发生失配的位置(失配位置同时表示第 \(p_{ j+1}\) 维第一次进行匹配的位置)。那么使用 \(p\) 匹配,以 \(i\) 为左端点最长的合法子段为 \([i, f_{i,p,k-1}-1]\)

对这个 DP 进行转移,不妨考虑从后往前走,分类讨论。

如果 \(f_{i+1,p}\)\(p_0\) 满足星星 \(i\)\(i+1\) 的第 \(p_0\) 维相同,那无需对 \(p\) 做任何调整。

否则我们要在 \(p\) 的基础上找到另一个排列 \(q\),让 \(f_{i+1,q}\) 转移到 \(f_{i,p}\)

注意到我们一定会将点 \(P\) 的第 \(p_0\) 维确定为第 \(i\) 个星星的第 \(p_0\) 维。不妨将 \(p\) 记作 \([p_0]AB\),那么 \(q\) 就是 \(A[p_0]B\)\(B\) 可以为空)。\(q\)\(p\) 的变化相当于提前使用第 \(p_0\) 维进行匹配,如果 \(q\) 中第一次使用第 \(p_0\) 维的星星和星星 \(i\) 的第 \(p_0\) 维相同就可以把 \(q\) 中的 \(p_0\) 提前成为 \(p\)

那么枚举所有的 \(q\)\(p_0\) 越靠前一定越优。时间复杂度 \(O(nk!)\)

T4 锐

分出来的若干段中,一定只有一段贡献的是段内最长不降子序列长度,其他贡献的是零或一的数量。这样可以得到 \(O(2^nn)\) 的做法。

暴力枚举所有划分方案其实很搞笑,可以直接做 DP。定义 \(f_{i,j,0/1}\) 表示前 \(i\) 个数分成了 \(j\) 段,是否有贡献段内最长不降子序列长度的子段,可以得到 \(O(n^3)\) 的做法。

每次扩展一段的 DP 做法其实也很搞笑,我们再加一维 \(0/1\) 表示当前这个新扩展的子段要选的是 \(0\) 还是 \(1\),这样每次只需要扩展一个位置而不是扩展一个子段了,这是 \(O(n^2)\) 的做法。

接下来是正解。注意到段内最长不降子序列长度这个贡献可以看成一个只贡献 0 和一个只贡献 1 个数的两个子段的贡献,那问题被转化为如下形式:选出一个尽量长的子序列,使得其连续段数不超过 \(k+1\),这子序列的长度就是划分 \(k\) 段时的答案(这是因为可能挑出来一段 000111000111000111,但是有贡献的只有一开始的一堆 0 和最后的一堆 1,而这显然可以只看成单挑了两个段产生贡献)。

倒过来考虑,我们要做的其实是将在其中删去一些元素,让未被删去的元素来产生贡献。首先一定不会删除连续的两个,因为它一定不优。当我们将中间的一个元素删除时,它两侧的两个元素会合并为一个新的元素(因为 \(01\) 间隔),这样我们进一步完成转化。

不妨让中间的元素价值为 \(2\)(因为对于 010/101 段,让他们全部产生贡献需要三次操作,但是只让两端产生贡献只用一次操作),边上的元素价值为 \(1\)(同理)。要选择一些价值和为 \(p\) 的元素,要求它们两两不相邻,且长度之和最小。讨论边上的元素是否删除后,剩下的问题是一个反悔贪心的问题,可以用堆维护。

当然证明了凸性也可以直接用闵可夫斯基和优化 \(O(n^2)\) 的算法。****

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

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

相关文章

从STM32的定时器到Linux上的时间相关服务

难题:在baremetal上实现按钮点击、长按事件 起因是因为我想用stm32加几个按钮只做一个我自己的控制器,我可以通过按钮执行一些功能。 硬件是如何和CPU通信的呢?CPU上支出几个GPIO引脚,这些引脚可以配置为输入模式和输出模式,并且都有两种状态——高电平和低电平。硬件连接…

自定义界面扫码,满足应用个性化定制需求

二维码识别技术已经成为我们日常生活中不可或缺的一部分,广泛应用于支付、交通、餐饮、生活服务以及智能家居等领域。它不仅是移动应用的重要流量入口,更是连接线上线下世界的桥梁。 不同的App在扫码界面的设计上各展其特色,从页面元素到交互方式,都体现了开发者对用户体验…

zabbix 打通LDAP登录

` dn=dc=localdomain,dc=com 搜索属性=uid 绑定DN=cn=admin,dc=localdomain,dc=com`

tarjan—算法的神(一)

本篇包含 tarjan 求强连通分量、边双连通分量、割点 部分, tarjan 求点双连通分量、桥(割边)在下一篇。伟大的 Robert Tarjan 创造了众多被人们所熟知的算法及数据结构,最著名的如:(本文的)连通性相关的 tarjan 算法,Splay-Tree,Toptree,tarjan 求 lca 等等。 注:有…

gitlab代码恢复

gitlab代码恢复背景: 从gitlab的web端页面下载了代码。需要恢复到新的gitlab上。下面操作以vonebaas-c-fabric-explorer-front工程为例 已经下载好vonebaas-c-fabric-explorer-front工程的zip包:操作步骤 原来的git地址是:http://xxx.git.com:9002/ 新的git地址是:http://1…

Vidful.ai:免费在线AI视频生成器

免费在线AI视频生成器Vidful.ai,无需下载或复杂操作,轻松将文字和图片转换为高质量、电影级视频!免费在线AI视频生成器Vidful.ai,无需下载或复杂操作,轻松将文字和图片转换为高质量、电影级视频! 网址:https://vidful.ai/ 为什么选择Vidful.ai?免费在线平台:无需下载、…

“数据守护,商业共赢” — 华企盾招商会议圆满落幕

在数字化浪潮席卷全球的今天,数据安全已成为企业可持续发展的基石。为了共同探讨数据防护的新策略,推动行业生态的健康发展,我司于2024年9月6日成功举办了一场以“数据守护,商业共赢”为主题的招商会议。此次会议汇聚了来自各行各业的精英人士,共同探讨如何有效应对数据安…

【优技教育】Oracle 19c OCP 082题库(第16题)- 2024年修正版

【优技教育】Oracle 19c OCP 082题库(Q 16题)- 2024年修正版 考试科目:1Z0-082 考试题量:90 通过分数:60% 考试时间:150min 本文为(CUUG 原创)整理并解析,转发请注明出处,禁止抄袭及未经注明出处的转载。 原文地址:http://www.cuug.com/index.php?s=/home/article/deta…

Canvas绘制图片合成样式

效果图web * {margin: 0;padding: 0;}.container {position: relative;width: 328px;height: 328px;margin: 100px auto;}.container img {position: absolute;width: 328px;height: 328px;}#canvas {position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);…

Axure的画图规范说明

Axure的画图规范说明自定义网页整体尺寸:1366x768;色值:# F8F9FD 顶部一级导航:1366x48;色值:# 1D8FFF 左右布局,左侧边导航:768x194;色值:# 191A23 侧边导航栏宽高:194x768 左侧一级菜单宽高:194x40/边距:16,字号:14,色值:#FFFFFF,图标:14x14,二级导航宽194w,…

解决vscode终端输出中文乱码问题图文教程

由于系统终端默认编码为GBK,所以需要修改为UTF-8 方法一 打开cmd输入chcp查看编码格式,查看以及修改如下图所示:方法二