ABC 388 (DEG)

news/2025/1/13 16:29:45/文章来源:https://www.cnblogs.com/jjjxs/p/18666263

赛时4题,打得很差的一场。尤其是E题,赛时一直被卡,直到结束看群友的结论后顿然醒悟,不到3分钟码出并AC,只能恨自己赛时为什么这么sb...

D

模拟 + 差分

从左到右枚举\(i\),每一次枚举可以计算出第\(i\)个人有多少颗糖(\(a[i]\) + 前面\(i-1\)个人给的糖数\(num\))。这样,第\(i\)个人会给出的糖数为:

numout = min(n - i, a[i] + num)

给后面的人糖的区间范围是\([i + 1, i + numout]\)。可以考虑设置差分数组\(stop\),其中\(stop[i]\)表示枚举到第\(i\)个人时,前面\(i-1\)个人刚刚开始停止给第\(i\)个人糖的人数。这样每次可以令\(stop[i + numout + 1]++\),用\(sumstop\)维护差分数组的前缀和,就是当前\(i-1\)个人不给第\(i\)个人糖的人数。所以上述的\(num\)便可直接计算:

num = i - 1 - sum_stop

最后每个人的糖数即为:

max(0 , a[i] + num - (n - i))

具体细节见代码

code

E

贪心 + 思维,最想抽自己的一集

只需要注意答案数量不超过\(n/2\)。这样就能得到一个关键性质:前\(n/2\)个蛋糕一定放上面,后\(n/2\)个蛋糕一定放下面。(赛时因为没想到这个而坐牢\(1h\)...)

然后就没有然后了,直接前一半与后一半贪心匹配就好了,二分\(or\)双指针均可做。

code

G

二分 + ST表 + 推公式

这道题不能延续题解中E的做法,需要换一个思路。其实E还有另一种做法:
二分答案,然后取答案作为前后缀长度,这样转化为判断前后缀是否一 一匹配(证明不难,略)。

前后缀一 一匹配在E中可以线性双指针来判断,在G中就不行了,因为要对\(q\)个子数组判断,复杂度\(O(nq)\),故需要用一种更高效的方式来判断:

预处理\(a\)数组中每个位置\(i\),满足:\(a[T[i]] >= 2 * a[i]\)的第一个位置\(T[i]\)\(1 <= i,T[i] <= n\))。

对于询问区间\([l,r]\),设二分的前后缀长度为\(k\),则对于前缀中的某个位置\(i\)\(l <= i <= l + k - 1\)),设在后缀中需要匹配的位置为\(pos\),则有:

r - pos = l + k - 1 - i

\(pos = r - l - k + i + 1\)。由于需要满足\(a[pos] >= 2 * a[i]\)的性质,故:

T[i] <= pos = r - l - k + i + 1

将带\(i\)的式子移到不等式左侧,即为:

T[i] - i <= r - l - k + 1

这个不等式是对任意 \(l <= i <= l + k - 1\) 均要满足的,否则就会出现前后缀中某个位置失配的情况,而右侧为定值。故可写作:

max(T[i] - i) <= r - l - k + 1 (l <= i <= l + k - 1)

因此,若上式满足,则当前二分的前后缀匹配,可以进一步扩大正在二分的答案\(k\);若不满足,则前后缀失配,需要缩小正在二分的答案\(k\)

可以发现左边是求区间最大值,由于无修改,故可以用ST表预处理来维护区间\(T[i]-i\)的最大值,且ST表的查询复杂度为\(O(1)\),相对于线段树可以少一个\(log\)复杂度。

总时间复杂度为\(O(qlogn + nlogn)\)

code

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

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

相关文章

巧用VTable打造炫酷金字塔图表

在数据分析和可视化领域,表格是展示数据直观、有效的方式之一。今天,就让我们来探索如何利用VTable这个强大的表格组件,制作出既美观又富有信息量的金字塔图表,以及深入了解VTable中各种单元格类型的使用方法,让你的表格也能“绘”出精彩图表!在数据分析和可视化领域,表…

基于 Performace 分析事件循环

我们是袋鼠云数栈 UED 团队,致力于打造优秀的一站式数据中台产品。我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值。本文作者:千寻什么是事件循环? 我们为什么需要事件循环?对于 JavaScript 是一门单线程语言我们是肯定的,JavaScript 单线程的特性保证了渲…

万字图文:SaaS业务架构、价值流、业务能力、业务流程、业务对象、组织架构

大家好,我是汤师爷~ 本文为读者提供一个SaaS业务架构的系统性框架,探讨业务架构分析的核心要素,帮助SaaS企业深入剖析目标客户的业务模式,全面理解他们的业务架构。 无论你是SaaS创业者、产品经理还是架构师,本文内容都将为你的系统设计和决策提供帮助。 1 目标与步骤 Saa…

老奶奶看了都会的WSL2连接USB设备教程!

老奶奶看了都会的WSL2-Ubuntu连接USB设备教程!作者:SkyXZ CSDN:SkyXZ~-CSDN博客 博客园:SkyXZ - 博客园参考资料:微软官方文档连接 USB 设备 | Microsoft Learn在Win11上用WSL2安装Ubuntu来开发简直不要太爽!!!但是很多小伙伴会发现,欸~为什么我在宿主机上插入的USB设…

HighReport报表工具V4.0带来十大核心优势变化

1.概述经过一年时间产品升级研发,HighReport报表工具正式推出V4.0版本,报表算法和报表功能获得全面提升。HighReportV4.0带来全面质的飞跃,具有明显的产品优势。 2.亮点一:双父格扩展模型报表引擎核心算法是父子格扩展模型,下面是常见模型一般报表厂商下面的扩展模型是不支…

一个超经典 WinForm,WPF 卡死问题的终极反思

一:背景 1. 讲故事 写这篇文章起源于训练营里一位朋友最近在微信聊到他对这个问题使用了一种非常切实可行,简单粗暴的方式,并且也成功解决了公司里几个这样的卡死dump,如今在公司已是灵魂级人物,让我也尝到了什么叫反哺!对,这个东西叫 Harmony, github网址: https://gi…

nginx 简单实践:静态资源部署、URL 重写【nginx 实践系列之一】

本文为 nginx 简单实践系列文章之一,主要简单实践了两个内容:静态资源部署、重写,仅供参考。〇、前言 本文为 nginx 简单实践系列文章之一,主要简单实践了两个内容:静态资源部署、重写,仅供参考。 关于 Nginx 基础,以及安装和配置详解,可以参考博主过往文章: https://…

题解:AT_abc353_f [ABC353F] Tile Distance

[ABC353F] Tile Distance 题解 cnblogs 题目传送门:洛谷,Atcoder Solution 很恶心人的分类讨论题。 很显然走大格子大概率比走小格子快。 对终点和起点向上下左右枚举大格子,我们就把问题转化为给两个大格子 \((a,b)\)、\((c,d)\),求怎样走最快。 对角的大格子可以通过 \(2…

数字化转型中的项目管理优化:协作工具的优势与应用

一、企业数字化转型的背景与挑战 1.1 数字化转型的驱动力数字化转型是指企业通过采用数字技术、创新流程和业务模式,提升运营效率、创造新价值并优化客户体验。随着云计算、大数据、人工智能和物联网等技术的不断发展,数字化转型已成为企业实现长期竞争力和持续增长的重要战略…

rk3568屏幕抖动问题

问题描述:有时候操作屏幕界面,发现屏幕有抖动的情况。经跟RK原厂沟通,此问题跟给ddr供电的vdd_logic有关系。vdd_logic默认定义:vdd_logic: DCDC_REG1 {regulator-always-on;regulator-boot-on;regulator-min-microvolt = <500000>;regulator-max-microvolt = <13…

B@se-还原错误字母表转码的base64编码

题目: 密文:MyLkTaP3FaA7KOWjTmKkVjWjVzKjdeNvTnAjoH9iZOIvTeHbvD== JASGBWcQPRXEFLbCDIlmnHUVKTYZdMovwipatNOefghq56rs****kxyz012789+/oh holy shit, something is missing... 第一行是密文,有明显的Base64编码特征(等号结尾) 第二行是大小写字母、数字、+、/,有明显的…

打开浏览器Chrome跳转指定页面并全屏打开

办法来源于https://blog.csdn.net/shaofengzong/article/details/119928096 主要用于大屏数据可视化的项目,设置电脑自启动后,打开浏览器的同时默认跳转指定页面并全屏打开。、 办法通过增加谷歌浏览器的启动参数进行实现。 两种方式实现,需要根据需求进行选择默认全屏打开指…