「杂题乱写」ABC 293 ~ ABC 295

这篇具有很好参考价值的文章主要介绍了「杂题乱写」ABC 293 ~ ABC 295。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

「杂题乱写」ABC 293 ~ ABC 295

点击查看目录
目录
  • 「杂题乱写」ABC 293 ~ ABC 295
    • ABC 293
      • D | Tying Rope
      • E | Geometric Progression
      • F | Zero or One
      • G | Triple Index
      • Ex | Optimal Path Decomposition
    • ABC 294
      • D | Bank
      • E | 2xN Grid
      • F | Sugar Water 2
      • G | Distance Queries on a Tree
    • ABC 295
      • D | Three Days Ago
      • E | Kth Number
      • F | substr = S
      • G | Minimum Reachable City

这个 ABC 系列大概会持续下去,每三场写一份。

每三场写一份的一个重要原因是标签上限十个。

因为是 ABC 所以不做 A 题 B 题和 C 题。

ABC 293

「杂题乱写」ABC 293 ~ ABC 295

身败名裂.jpg

D | Tying Rope

简单爆搜。

E | Geometric Progression

发现模数不为质数,通项公式算不了,因为需要逆元。那么分治。

F | Zero or One

考虑直接枚举 \(b\) 判断是否合法,但是复杂度 \(O(n\log_bn)\)

考虑枚举一个二进制数然后二分出对应的 \(b\),但是复杂度 \(O(2^{\max(\log_bn)}\times\log_2n\times\log_2n)=O(n\log_2^2n)\)

那么考虑缝合起来,设一个 \(k\),枚举 \(1\sim k\)\(b\),然后 \(b\) 大于 \(k\) 时将 \(n\) 化为 \(b\) 进制数后位数比较小,可以直接枚举 \(\log_k\) 位的所有二进制数。

总复杂度 \(O(k+2^{\log_kn}\log_2^2n)\),设 \(k=10^4\) 可过。

G | Triple Index

莫队板子题。

Ex | Optimal Path Decomposition

这个题一看就挺二分答案的。

\(f_{i, j}\) 表示以 \(i\) 为根的子树中,\(i\) 有不超过 \(j\) 个儿子与自己颜色相同时,从 \(i\) 出发的一条路径上的与自己颜色不同的颜色数量最大值。显然 \(0\le j\le2\)。(直接表示颜色数量最大值,不排除自己应该也行,但转移好像不太方便。)

然后二分查找 \(k\),每次用 \(O(n)\) 的时间算一下 \(f\) 数组,总复杂度 \(O(n\log_2n)\)

如何转移?设当前枚举到了 \(u\) 的叶子结点 \(v\),那么当且仅当 \(f_{u,j_1} + f_{v, j_2} + [j_2 = 2] \le k\) 时可以转移。如果 \(f_{v, j_2}\) 完全没机会转移上去说明这棵子树已经不满足条件了,直接令 \(f_{u,0} = f_{u,1} = f_{u,2} = +\infty\),转移到根上后即可毙掉这种情况。

确实有点抽象,但是代码很短很好写。

ABC 294

D | Bank

考虑开个 \(vis\) 数组记录 \(1\sim n\) 中那些数在 \(b\) 数组中,然后随便操作了。

E | 2xN Grid

在两个数组中各开一个指针,移动过程中保证两个指针指向的区间有交,值相等时计算相交长度。

F | Sugar Water 2

连二分都不会了。

我们二分一个浓度 \(x\),计算浓度小于等于 \(x\) 的混合糖水数量。

化简两杯糖水混起来后浓度小于等于 \(x\) 的不等式:

\[\begin{aligned} \frac{a_i + c_j}{a_i + b_i + c_j + d_j} &\le x\\ a_i + c_j &\le x(a_i + b_i + c_j + d_j)\\ a_i + c_j &\le a_ix + b_ix + c_jx + d_jx\\ (1 - x)a_i - b_ix &\le (x - 1)c_j + d_jx\\ \end{aligned} \]

那么设 \(v1_i = (1 - x)a_i - b_ix, v2_i = (x - 1)c_j + d_jx\),排序后可以快速二分查找到与第 \(i\) 杯糖水混合后浓度小于 \(x\) 的糖水数量了。

G | Distance Queries on a Tree

树剖板子题。

ABC 295

D | Three Days Ago

不难发现一个子段满足条件必须要求这个子段内的每个数字出现次数为偶数。

状压一下 \(1\sim i\) 每个数字出现次数的奇偶性存进 \(f_i\),当且仅当 \(f_i=f_j\) 时字段 \([i + 1, j]\) 满足条件。

E | Kth Number

经典结论:

\[E(A_k) = \sum_{i = 1}^{m} i\times P(A_k = i) = \sum_{i = 1}^{m} P(A_k \ge i) \]

枚举到 \(i\) 时,为了满足 \(i\) 至少是第 \(k\) 大,前面至少要有 \(n - k + 1\) 个数垫着。但是还有一些数本来就小于 \(i\),那么设 \(l\)\(n - k + 1\) 减去原数组中小于 \(i\) 的数的个数(也就是需要的 \(0\) 的个数),\(r\) 为原数组中 \(0\) 的个数,则:

\[P(A_k\ge i) = \sum_{j = l}^{r}\dbinom{r}{j}(\frac{m - i + 1}{m})^{j}(\frac{i - 1}{m})^{r - j} = \frac{1}{m ^ r}\sum_{j = l}^{r}\dbinom{r}{j}({m - i + 1})^{j}({i - 1})^{r - j} \]

有些细节。

F | substr = S

数位 DP 板子!但是允许重叠,所以加一个 KMP。

G | Minimum Reachable City

有意思。

观察到数据范围 \(1\leq p_i \leq i\),所以说父亲都指向儿子,且任意一个点的儿子编号都比自己大。

「保证最开始时 \(v\) 能到达 \(u\)」,所以 \((u, v)\) 一定是一条返祖边,在树上构成一个强连通分量,这里可以把一个强连通分量放在一个并查集里面。操作 \(1\) 直接把 \(v\rightarrow u\) 路径上经过的点全部合并到一个并查集里面,操作二直接找 \(x\) 所在并查集的根。文章来源地址https://www.toymoban.com/news/detail-462166.html

到了这里,关于「杂题乱写」ABC 293 ~ ABC 295的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • linux查看当前目录及子目录所有文件

    1.查看当前目录及子目录所有文件: du -ah 执行结果如下: 2.查看当前目录及子目录所有文件,并根据大小排序: du -a | sort -n 执行结果如下:(单位:字节) 整理完毕,完结撒花~

    2024年02月16日
    浏览(27)
  • js实现点击查看全部/收起功能

    在上一篇文章实现用js截取文本后,我的另一个需求也迎刃而解了。需求就是一段长文本需要溢出隐藏,然后点击全部时显示全部文本,点击收起又回到溢出隐藏的状态。实现的效果如下图: 实现的思路时点击全部时使用这条数据的原文本,点击收起时使用截取后的文本。而

    2024年02月10日
    浏览(50)
  • Linux centos7查看目录下子目录的方法

    (所述方法是在当前目录下,如在其他目录,要注意查找目录的表达) 在目录中,一般存放着普通文件及目录文件。 可用ls查看目录下的所有文件 如果我们仅仅希望查询目录下的子目录文件,不需要出现普通文件,如何操作呢? 下面提供6种方法,供参考。 1.ls -d  */ 我们知

    2024年02月10日
    浏览(39)
  • python pyqt5 如何点击按钮,打开文件夹选择目录

    您可以使用PyQt5的QFileDialog类来实现打开文件夹选择目录的功能。下面是一个示例代码,演示了如何创建一个窗口,包含一个按钮,点击按钮后弹出文件夹选择对话框并返回所选目录的路径: import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QFileDialog class MainWindow(Q

    2024年02月10日
    浏览(49)
  • MCU方案选型和进口替代,点击查看~

    MCU(微控制单元)俗称单片机,可被认为是CPU的缩减版本,把CPU的频率与规格进行缩减处理,并将RAM、ROM、时钟、A/D转换、定时/计数器、UART 、DMA等电路单元,甚至包括USB接口、LCD驱动电路都整合在一块芯片之中,形成芯片级的计算机,为各种应用场合提供组合控制。   MC

    2024年02月20日
    浏览(21)
  • Linux 查看当前目录大小

    1. 查看当前目录下所有目录及子目录大小 2.查看当前文件目录各个文件夹大小 查看指定目录 -h表示用K、M、G的人性化形式显示 Linux 查看磁盘信息 df 显示文件系统的磁盘使用情况统计 喵呜面试助手:一站式解决面试问题,你可以搜索微信小程序 [喵呜面试助手]  或关注 [喵呜

    2024年02月10日
    浏览(37)
  • 查看磁盘信息命令和查看目录以及文件占用空间大小命令

    记录 :313 场景 :在CentOS 7.9操作系统,查看磁盘信息命令、查看目录以及文件占用空间大小命令。主要是df、du、lsblk、fdisk、parted、pvdisplay、vgdisplay、lvdisplay、free等命令。 版本: 操作系统:CentOS 7.9 1.df命令 查看文件系统占用磁盘空间大小。df,disk free简称。 (1)查看帮助 命

    2024年02月07日
    浏览(35)
  • React Native 点击图片变大,查看图片

    Index.js: 参考链接: https://www.npmjs.com/package/react-native-image-zoom-viewer https://chat.xutongbao.top/

    2024年02月14日
    浏览(26)
  • linux 查看某个进程所在目录

    1、通过 ps -ef | grep xxx 查看进程信息 2、通过 ll /proc/PID 命令查看进程所在目录位置 Linux在启动一个进程时,系统会在 /proc 下创建一个以PID命名的文件夹,在该文件夹下会有我们的进程的信息,其中包括一个名为exe的文件即记录了绝对路径,通过 ll 或 ls –l 命令即可查看. cw

    2024年02月16日
    浏览(37)
  • Xcode查看APP文件目录

    点击window - Devices and Simulatores 得到的文件 右键显示包内容,获得APP内数据 使用分发的证书无法下载文件内容,需要APP是使用开发证书进行签名。

    2024年01月23日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包