25.01.03

news/2025/1/7 14:04:23/文章来源:https://www.cnblogs.com/KinNa-Sky/p/18650838

喜欢我 \(O(n^2 \log^2 n)\)\(2e5\) 吗😋



_ _ _ _ _ _ Ciallo~(∠・ω< )⌒★


A

有解的一个必要不充分条件是:
\(L_i\) 表示 \(l \le i\) 的左端点数量,\(R_i\) 表示 \(r < i\) 的右端点数量,对于每个位置 \(i\) 满足 \(L_i \ge i \wedge R_i < i\)
意思就是对于每个位置,左边要有足够的左端点对应左边的点,右边有足够的右端点对应右边的点,右边与左边类似条件翻到左边成为上面的模样。

引理:若一组区间有解,给当前序列第一个位置指定区间之后,将第一个位置和对应区间删去,剩下的位置还满足上述性质,则剩下的区间仍然有解。

证明:首先 \(L_i\ge i\) 在操作前后始终成立,可以直接忽略。只需要考虑 \(R_i < i\)

设一个合法解的右端点序列为 \(p_1, p_2, \cdots p_n\),如果指定 \(p_k\) 放在第一个位置,考虑如下交换策略。

\(t = p_1\) 拿出来作为缓存区间,依次枚举位置 \(i = 2\sim k - 1\)

  • 如果 \(t > p_i\) 则交换 \(t\)\(p_i\)
  • 如果 \(t\le p_i\) 则不做任何操作;

最后将 \(t\) 作为 \(p_k\) 插入进去。

不难发现如果执行该交换策略后的序列不合法,一定是存在 \(i\) 满足 \(p_i' < i\),而我们保证了性质成立,\(R_i < i\),于是 \(1\sim i\) 中至少有一个 \(p_j\ge i\),这与上述交换策略矛盾。所以应用上述交换策略一定能构造出一个 \(p_k\) 在开头的解,从而引理成立。

关于 \(L_i\ge i\) 在操作前后始终成立:
注意到将第一个位置删去后后面所有下标都减一,由于选的区间 \([l, r]\) 能选首位置,所以 \(l \le 1\),所以后面的 \(L_i\) 都减一。

我们据此从左到右贪心的选可以选的最小值就好了。

维护 \(i - R_i\),满足上面的性质即为所有 \(i - R_i \ge 1\)

首位置选择区间并将它们删去(注意此时所有的下标要减一),设区间的右端点(减一后)是 \(r\),删去区间的影响即为 \([1, r]\)\(i - R_i\) 全部减一,后面的 \(i - R_i\) 不变。(\([1, r]\)\(i \gets i - 1, R_i \texttt{不变}\),后面的 \(i \gets i - 1, R_i \gets R_i - 1\)。)

所以我们维护后面第一个 \(1\) 的位置(后缀最小值及其位置),我们可以选的区间就是左端点小于等于 \(1\) 右端点小于第一个 \(1\) 的位置的区间。在这些区间里取编号最小的区间。

可以用线段树维护 \(i - R_i\) 的最小值及位置;用线段树维护右端点为 \(i\) 的区间的编号最小值(底层 set,维护区间 \(\min\)),在扫到区间左端点时把它加进去即可。

B

喜欢我 \(O(n^2 \log^2 n)\)\(2e5\) 吗😋

讲题整活最高荣誉:啊?

正反各跑一遍 KMP,得到 T 的每个位置正向匹配 S 的最长前缀,反向匹配 S 的最长后缀。

然后枚举 T 相邻两个位置暴力跳 \(nxt\) 去重可以 \(n^3\) 解决。

那么优化?
\(nxt\) 就是在 \(nxt\) 树上到根链求和链清空嘛。
直接给前缀每个位置开线段树树剖维护。
空间可能开不下但是动态开点卡一卡。

然后就可以速度榜榜三啦😋

出题人完全不卡的是吧

可能用上的两个剪枝?

LL tmp = res; res += Qry(u, mched[i + 1]);
if (tmp == res) break;
int tmp = seg[u].qry(dfn[top[x]], dfn[x]);
if (!tmp) break;

都是在 \(nxt\) 树上已经被访问过了则不继续查询了。

C

知周所众,DAG 里有至少一个没有入度的点。

考虑直接状压,设 \(f_{S}\) 表示 \(S\) 构成 DAG 的方案数。
枚举无入读的点集 \(T\),显然 \(T\) 内部不能有边,\(S - T\)\(T\) 之间的边要么指向 \(S - T\) 要么删去,然后由于许多状态会转移重我们使用钦定带上一个容斥系数有:
\(f_{S} \gets \sum_{\varnothing \neq T \sube S} (-1)^{|T| + 1} \cdot f_{S - T} \cdot 2^{cnt_{S} - cnt_{T} - cnt_{S - T}}\)
其中 \(cnt_{sta}\) 是集合内部边数。

现在已经可以枚举子集 \(O(3^n)\) 解决。

进一步的,我们把上式参数分离一下
\(\displaystyle\frac{f_{S}}{2^{cnt_{S}}} \gets \sum_{\varnothing \neq T \sube S} \frac{(-1)^{|T| + 1}}{2^{cnt_T}}\cdot \frac{f_{S - T}}{2^{cnt_{S - T}}}\)

就是 \(\displaystyle F_{S} = \frac{f_S}{2^{cnt_S}}, G_{T} = \frac{(-1)^{|T| + 1}}{2^{cnt_T}}, F_{S} = \sum_{\varnothing \neq T \sube S} F_{S - T}\cdot G_{T}\)

可以子集卷积。

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

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

相关文章

MES 包装 称重 测试备忘

称的功能都差不多,需要MES适配不同品牌的称。 串口输出2中模式:可以调节 精度:精度0.1g 精度是0.001kg 第一种(默认):不停的串口输出。 输出速度很快,容易导致程序死掉。 第二种模式:重量稳定输出。 下面是重量稳定输出模式截图: ------ erwa.cn 二娃测试备忘

深度学习基础理论————训练加速(单/半/混合精度训练)/显存优化(gradient-checkpoint)

主要介绍单精度/半精度/混合精度训练,以及部分框架(DeepSpeed/Apex) 不同精度训练 单精度训练(single-precision)指的是用32位浮点数(FP32)表示所有的参数、激活值和梯度 半精度训练(half-precision)指的是用16位浮点数(FP16 或 BF16)表示数据。(FP16 是 IEEE 标准…

使用学生优惠创建 Azure Database for MySQL 数据库

文章首先强调了需要一个已通过学生认证的 Azure 账户,然后详细讲解了从登录 Azure 门户页面、选择免费服务、配置服务器和网络等步骤,最终成功创建并部署 Azure Database for MySQL。前言 在此之前,你需要拥有一个已通过学生认证的 Azure 账户。关于通过 Azure 学生认证,网…

【Windows】修改虚拟内存位置

这篇文章详细介绍了如何在 Windows 系统中将虚拟内存文件(pagefile.sys)从 C 盘移动到其他盘。步骤包括查看文件位置、检查和关闭 C 盘加密、修改注册表、设置新的虚拟内存位置并重启电脑,最终实现文件转移。问题:系统优化中,希望将pagefile.sys文件(即虚拟内存)移动到其…

ex7.3

import numpy as np from scipy.interpolate import lagrange import matplotlib.pyplot as plt import matplotlib yx = lambda x: 1/(1+x**2) def fun(n): x = np.linspace(-5, 5, n+1) p = lagrange(x, yx(x)) # n次插值多项式 return p x0 = np.linspace(-5, 5, 100) plt…

【hashMap扩容】关于hashMap扩容以后,新下标的理解

首先我们知道hashMap在存取元素的时候的下标算法是这样子的 根据当前元素(e)的hash值((e.hashCode()) ^ (e.hashCode() >>> 16))去与上当前hashMap的容量减一(Cap-1) put和get都是如此 put get所以在扩容算法中,元素的坐标也应是用这种方式存的,看一下代码我们会发现…

【自动化测试基础】Pytest前后置处理

Pytest的前后置(固件、夹具)处理 有一些初始化配置和测试之后的收尾,只需要处理一次,这个时候我们就要用到夹具。 Pytest提供了以下几种setup和teardown方法:setup_function 和 teardown_function: 用于每个测试函数 setup_method 和 teardown_method: 用于每个测试方法(…

进阶大模型开发框架LangChain

本文来自博客园,作者:王竹笙,转载请注明原文链接:https://www.cnblogs.com/edeny/p/18650785

【unity】学习制作类银河恶魔城游戏-6-

碰撞检查 控制面板定义变量射线功能创建射线实体分配射线实体调整射线编辑碰撞代码 创建地面和墙面的层判断是否碰撞到了地面这行代码的作用是:从groundCheck的位置开始,向下(Vector2.down)投射一条射线,距离为groundCheckDistance,只检测whatIsGround指定的层上的物体。…

直播预告丨社区年度交流会 《RTE 和 AI 融合生态洞察报告 2024》发布

新的一年开始,是时候再深度交流一次了!欢迎关注 1 月 4 日周六晚 社区年度交流会的 线上直播 。这将是一群 实时多模态 AI 开发者 的聚会。我们将一起探讨 Voice Agent 在 AI 陪伴助手、AI 硬件和 AI 企业服务等应用场景中的技术突破与产品创新。同时,我们也会交流 RTE 开发…

从 LB Ingress 到 ZTM:集群服务暴露新思路

12 月 28 日, KubeSphere 社区联合 Higress 社区主办的云原生 AI Meetup 广州站成功召开,我们非常荣幸邀请到CNCF Ambassador、Flomesh 社区布道师——张晓辉老师,张老师为大家带来了一场主题为「从 LB Ingress 到 ZTM:集群服务暴露新思路」的主精彩分享。以下为演讲实录,…

CH32V203F6P6-TSSOP20测试之03---三种烧录方式

CH32V203F6P6-TSSOP20支持三种下载方式:USB下载、串口下载(用串口2即8脚PA2为TX2接下载的RX,9脚PA3为RX2接下载的TX)和SW二线下载。CH32V203F6P6-TSSOP20的BOOT1内置接GND,而BOOT0外露,用户可以选择两种启动模式,因而支持USB下载和串口下载。接法可以选择下面两种方法的…