多校 A 层冲刺 NOIP2024 模拟赛 17

news/2025/1/11 20:57:55/文章来源:https://www.cnblogs.com/07Qyun/p/18521580

多校A层冲刺NOIP2024模拟赛17

T1 网格

签到题

注意到 \(+\)\(\times\) 由于优先级其实是分开的,所以可以考虑每到达一个 \(+\) 计算一次贡献(乘上一个组合数),然后将前置贡献重新赋值为方案数,DP 只需考虑连续 \(\times\) 段即可。

时间复杂度 \(O(nm)\)

T2 矩形

根号分治

发现不管怎么枚举总会出现一些特殊情况使得复杂度存在瓶颈,并且虽然值域是 \([1,n]\) 但总共只有 \(O(n)\) 个点,图是很稀疏的。

这启发我们把特殊的拿出来分讨去做,考虑以列为单位,并设置阈值 \(B\),一列中点数大于 B 的记为大段,小于的记为小段,则只需要考虑 \(3\) 种情况的贡献。

  • 大段与小段之间的贡献
    注意到大段的个数不会超过 \(O(\frac{n}{B})\) 个,考虑枚举每一个大段,然后去计算所有小段对它的贡献。具体的当枚举到一个大段时,在值域上标记它所拥有的点,然后枚举小段,查询每个有多少个相同纵坐标,记为 tot,则一个小段的贡献为 \(\binom{tot}{2}\)
    这一部分的时间复杂度为 \(O(\frac{n^2}{B})\)

  • 大段与大段之间的贡献
    有两种做法
    第一种同上即可解决。
    第二种可以使用 \(bitset\) 优化,具体的枚举任意两个,然后用 \(bitset\) 按位与计算相同个数,然后同上组合数计算贡献,时间复杂度为 \(O(B^2\frac{n}{w})\)

  • 小段与小段之间的贡献
    注意到小段只有至多 \(O(B)\) 个元素,可以考虑 \(O(B^2)\) 枚举去做。
    具体的,可以在值域上枚举下端点,然后对于所有包含这个点的段进行计算,即将所有在下端点上方的点加入到值域 \(cnt\) 数组中,由于钦定了下端点,所以 \(cnt\) 中直接就是答案。
    考虑时间复杂度,发现每个点至多会被枚举 \(O(B)\),而总共有 \(O(n)\) 个点,这一部分的时间复杂度为 \(O(nB)\) 的。

\(B\)\(\sqrt n\) 时总复杂度最优,为 \(O(n\sqrt n)\),由于本题特殊数据很难造,并且就算强度高也远远达不到这个上界所以跑的飞快。

双倍经验 [Ynoi Easy Round 2024] TEST_132

T3 集合

不会

T4 倒水

概率期望,数据结构优化DP,线段树

注意到一个性质

只要有一次向前倒就结束了,证明显然。

那么有一个推论

\(b_i\)\(i\) 当前的量,\(i\) 倒出去的水的量为 \(\min(a_j,b_i)\),证明考虑分讨,当 \(j\) 中没有水时显然,而有水时 \(i\) 中的水一定是从 \(j\) 中来的,所以一定达不到 \(j\) 的上界。

那么可以设计状态进行 DP,设 \(f_{i,j}\) 表示当到 \(i\) 要倒水时 \(i\)\(j\) 单位体积的水的概率。

根据上述结论,发现向前转移能直接计算贡献即可,而向后转移则转移到 \(f_{k,\min(a_k,j)}\)(此时仍需计算自己的贡献)。

现在就得到一个 \(O(n^3)\) 的做法。

显然能前缀和优化,将刷表改为填表,等转移完后再计算贡献即可优化至 \(O(n^2)\),这一部分比较重要,下面具体讲讲。

设辅助数组 \(s1_{i,j}=\sum_{a\le i,b\le j}f_{a,b},s2_{i,j}=\sum_{a\le i,b\le j}bf_{a,b},hs_i=\sum_{j}\max(0,i-a_j)\),即 \(s1,s2\) 分别是概率、期望的前缀和。

  • 转移

\[\begin{cases} f_{i,j}=(s1_{i-1,j}-s1_{i-1,j-1})\frac{1}{n-1}\quad &j< a_i \\ f_{i,j}=(s1_{i-1,n}-s1_{i-1,j-1})\frac{1}{n-1}\quad &j=a_i \end{cases} \]

  • 计算贡献
    \(res_i\) 表示 \(i\) 的期望(答案),下面为了方便就直接写等号了,实际上为两部分之和。

    • 向前倒以及向后倒剩下的

      \(res_i=\sum_{j=1}^{a_i} hs_jf_{i,j}\frac{1}{n-1}\)

    • 别的向前倒,倒给它的

      \(\min\) 去掉,所以得分讨。

      • 从大于 \(a_i\) 倒来

        \(res_i=(s1_{n,n}-s1_{i,n}-s1_{n,a_i}+s1_{i,a_i})a_i\frac{1}{n-1}\)

      • 从小于 \(a_i\) 倒来

        \(res_i=(s2_{n,a_i}-s2_{i,a_i})\frac{1}{n-1}\)

\(O(n^2)\) 比较平凡。

考虑优化

只需考虑 \(O(n^2)\) 的瓶颈部分。

即求解 \(hs,s1,s2\) 数组,以及(用 \(hs\) 数组)计算倒剩下的贡献。

对于求解 \(hs\) 数组可以对 \(a\) 数组排序后求解,就将这一部分复杂度降低到 \(O(nlogn)\)

如果只维护高度值域的前缀和(即 \(s_{i,j}=\sum_{k\le j}f_{i,k}\) )会发现一些很好的性质!

\[\begin{aligned}&\begin{cases} f_{i,j}=\frac{1}{n-1}s_{i-1,j}\quad &j< a_i \\ f_{i,j}=\frac{1}{n-1}\sum_{k\ge j}s_{i-1,k}\quad &j=a_i \end{cases}\\&\begin{cases}s_{i,j}=(1+\frac{1}{n-1})s_{i-1,j}\quad &j< a_i \\ s_{i,j}=s_{i-1,j}+\frac{1}{n-1}f_{i,j}\quad &j=a_i\end{cases}\end{aligned} \]

如果用线段树去维护值域的话( 扫描线 )则 \(j< a_i\) 在只需要区间乘即可,而 \(j=a_i\) 则需区间求和,单调修改。

考虑怎么计算贡献

  • \(hs\)

    \(hs_i\) 作为系数放在线段树上,扫描到 \(i\) 时区间求和即可。

  • \(s1\)

    发现只有 \(4\) 个值 ( 矩形面积 ) ,按第一维处理,扫描到 \(i\) 时处理一次( 扫描线的套路 ),扫描结束处理一次。

  • \(s2\)

    只需结合一下 \(hs,s1\) 的做法即可,即在线段树上每一个位置,将位置作为系数,然后扫描线求矩形面积。

这样就只需要维护一个支持区间乘法,单点修改,区间求和的线段树即可。

时间复杂度 \(O(nlogn)\),常数很小,能轻松爆标。

p

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

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

相关文章

图吧垃圾佬理解的早期国产芯片历史(龙芯中科和同行的恩怨解析)

额……老铁们,我图吧老捡国产芯片垃圾的了。最近有人问咱关于国产芯片发展故事的事,所以咱简单答疑了一下顺带做了个记录的整理,简单看下情况。 水友: 就是我有个同学,已经魔怔了,现在已经在同学群里说天玑吊打国产芯片了 前几天说的是吊打9950x… 垃圾佬: 吊打国产芯片…

Apple Safari 18 - macOS 专属浏览器 (独立安装包下载)

Apple Safari 18 - macOS 专属浏览器 (独立安装包下载)Apple Safari 18 - macOS 专属浏览器 (独立安装包下载) 适用于 macOS Sonoma 和 macOS Ventura 的 Safari 浏览器 18 请访问原文链接:https://sysin.org/blog/apple-safari-18/ 查看最新版。原创作品,转载请保留出处。 作…

记录一次大炮打蚊子的modbustcp通讯连接异常问题

一.问题描述 某种场景下,安装有Ubuntu22系统的设备A开机后,1-2min内设备E遥控器不能遥控设备A移动,之后恢复正常。 二.设备组网设备A和设备C之间使用modbustcp协议进行通讯。 三.首战 3.1 查看日志 放开该端口的modbus查询帧日志打印,发现整体的帧格式,发现返回了modbus数…

读数据工程之道:设计和构建健壮的数据系统25查询

查询1. 查询 1.1. 通过理解查询、建模和转换​,你会掌握将原始数据转化为下游利益相关者可用数据的工具 1.2. 被很多人熟知的SQL,这是最流行和通用的查询语言 1.3. 查询是数据工程、数据科学和数据分析的基础 1.4. 在了解数据转换的基本模式和技术之前,你需要了解什么是查询…

制作一个龙芯旧世界的 dotnet sdk docker 镜像

本文将和大家分享如何制作一个在龙芯旧世界上可跑的 dotnet sdk docker 镜像,以及我的踩坑过程以下是我的 dockerfile 文件,内容特别简单 FROM cr.loongnix.cn/library/debian:buster WORKDIR /root RUN apt-get update -y && \apt-get install -y --no-install-reco…

18-网络安全测评技术与标准

18.1 概况 1)概念 :指参照一定的标准规范要求,通过一系列的技术和管理方法,获取评估对象的网络安全状况信息,对其给出相应的网络安全情况综合判定。 网络安全测评对象通常包括信息系统的组成要素或信息系统自身。2)发展1983年,美国国防部颁布《可信计算机系统评估准则 T…

修改PE导入表注入DLL——实例图文教程——让你看的明明白白

其实通过修改PE导入表注入DLL的教程很多,本文也只是其中的沧海一粟而已,但既然写出来,自我感觉应该还是有一点自我的东西的,至少自认为做到了思路清晰,每步都有据可依,让看客应该能做到“看的明明白白”!本贴以《英雄无敌》1游戏程序为例子,向其添加一个DLL,调用其中的…

《机器人SLAM导航核心技术与实战》第1季:第10章_其他SLAM系统

《机器人SLAM导航核心技术与实战》第1季:第10章_其他SLAM系统 视频讲解【第1季】10.第10章_其他SLAM系统-视频讲解【第1季】10.1.第10章_其他SLAM系统_RTABMAP算法【第1季】10.2.第10章_其他SLAM系统_VINS算法【第1季】10.3.第10章_其他SLAM系统_机器学习与SL第1季:第10章_其…

web安全作业(SQL注入1)

web安全作业(SQL注入) 理论作业 1.什么是盲注?盲注的类型? 2.报错注入常用的函数有哪些?请分别解释其用法? 3.时间盲注的payload构造方法?用到的函数及其用法? 4.DNS Log注入原理?前提条件及应用场景分别是什么? 1. 开发人员屏蔽了报错信息,导致攻击者无法通过报错信…

RHEL9.4搭建虚拟机实验环境

日期:2024.10.27 目的:搭建Linux虚拟机环境供学习测试,无图形界面。同等硬件配置下性能上要优于Windows上运行的虚拟化解决方案。 参照:鸟哥Linux私房菜服务器篇 RockyLinux 9版 https://linux.vbird.org/linux_server/rocky9/ Linux中国 如何在 Rocky Linux 9 / AlmaLinux…

o1-mini首战Codeforces

chatgpt-o1-mini挑战codeforces它来了,找了最近的一场比赛,准备来试试效果如何,比赛链接https://codeforces.com/contest/2032 首先上场的是第一题 A - Circuit 我直接开问通过上述方法和代码,可以快速准确地解决问题,并满足题目中的时间和空间限制。 然后提交,果然没问题…