P5186 [COCI 2009_2010 #4] OGRADA

news/2025/12/4 13:19:37/文章来源:https://www.cnblogs.com/ProJon/p/19306974

Luogu 题目传送门

双倍经验,一摸一样的题:Luogu 题目传送门2

这是我的一个有趣的做题故事,在洛谷打完卡(运势 § 凶 § )后,随机跳转一题,并到了这一题。

\(\;\)

题目大意

一个叫 Matija 的人打算用一个为 X 大小的滚筒刷一个栅栏。其中,这个栅栏是由 N 条木板,从左到右依次编号为 1…N,i 号木板的高度为 \(h_i\)。 Matija 是从上往下尽可能的刷最大面积的漆,剩下刷不到的面积用牙刷☠️刷。我们需要求出用牙刷 「涂」 的面积+在满足 「涂」 的面积最少的情况下,他最少要用滚筒刷 「刷」 多少次。

输入样例:

5 3
5 3 4 4 5

样例

一共有 5 个板子,高度分别为:5 3 4 4 5, 和一个刷子大小为 3 。Matija 会用刷子两次刷1号、2号、3号板子 \(3\) 格子的高度 和 3号、4号、5号板子 \(4\) 格子的高度。剩下的面积为 \(3\) 格子。

输出为:

3
2

算法!

用滑动窗口!

P1886 滑动窗口模板传送门

把问题分成两个 Parts。

Part 1

首先我们做一个行列式叫做 d ,然后从 1 到 N 遍历一遍,每次查询 a[i] 的时候检查 d 里的第一块木板 d.front() 移除木板如果超出窗口范围,i-d.front()+1为窗口大小。

if (!d.empty()&&i-d.front()+1>X) d.pop_front();

\(\;\)

然后移除全部 ≥ a[i] 的木板。有些人问为什么要这样做,答:这样可以维持第一块木板 d.front() 在本次窗口最小,相当于 \(min(a[i]) \; \{i\sim i+k-1\}\)

while (!d.empty()&&a[d.back()]>=a[i]) d.pop_back();

\(\;\)

if (i>=X) 表明可以开始刷了,用 window[i] 记录当前窗口最小值(换句话说:当前窗口的有效高度)。当前窗口的有效高度 \(\ast\) 刷子的长度 = 每个木板能涂的最大高度: window[i]*X。但是每个窗口大概率会有重叠的部分,比如像以下照片。
重叠

\(\;\)

这两个虚线画的为两个窗口,被涂的部分为重叠部分。重叠部分算法为选更矮的木板 min (新的木板高度,上一个窗口的有效高度) 乘以重叠部分的长度 X-1

min(window[i-1],window[i])*(X-1)

最后在用总长度 - 刚刚计算出来的长度就是第一小问的答案:high-num

\(\;\)

Part 2

用测试样例我们得到的 windows[0,0,3,3,4]

但是这不是每个板子的有效高度,比如 1 号板子有效高度是 3 不是 0, 3号、4号板子 有效高度是 4 而不是 3 。

如果仔细看,会发现 2 \(\ast\) k-1 个连起来的板子的中间板子,列如 i ~ i+2 \(\ast\) k-1 号板子的第 i+k号板子的有效高度是为 min(a[i]) {i~i+2 \(\ast\) k-1}。

而且在 Part 1 我们已经得到了每个窗口左边的有效高度,所以我们只需要从右往左查询一边把 window[i] 设为 min(window[j]) {j-k~j \(\leq\) i}。这样就可以把 windows 改成每个木板的有效高度 [3,3,4,4,4]

code:

for (int i=N;i>=1;i--){if (!d2.empty()&&d2.front()-i+1>X) d2.pop_front();while (!d2.empty() && window[d2.back()]<=window[i])d2.pop_back();d2.push_back(i);window2[i]=window[d2.front()];
}

最后,我们知道了每个位置要刷的高度,要求刷的次数。则用贪心可求出:

  1. \(window[i] \neq window[i+1]\;\) ans++
  2. 每隔 k 个窗口\(\;\) ans++

最后的最后,不开 long long 见祖宗!

时间复杂度:O(3N) = O(N)

废话不多说,代码直接上

完整代码

#include <bits/stdc++.h>
using namespace std;
#define int long long
const int maxn=1e6;int N,X,a[maxn],high,window[maxn],window2[maxn],num,ans,cnt;signed main() {cin>>N>>X;for (int i=1;i<=N;i++) cin>>a[i],high+=a[i];deque<int> d,d2;for (int i=1;i<=N;i++) {if (!d.empty()&&i-d.front()+1>X) d.pop_front();while (!d.empty()&&a[d.back()]>=a[i]) d.pop_back(); // 移除比最后一个长的d.push_back(i); // 新的if (i>=X) {window[i]=a[d.front()];num+=window[i]*X;num-=min(window[i-1],window[i])*(X-1);}}for (int i=N;i>=1;i--){if (!d2.empty()&&d2.front()-i+1>X) d2.pop_front();while (!d2.empty() && window[d2.back()]<=window[i]) d2.pop_back();d2.push_back(i);window2[i]=window[d2.front()];}cout<<high-num<<endl;num=-1;for (int i=1;i<=N;i++){if (window2[i]!=window2[i-1]||i>=num+X) {ans++;num=i;}}cout<<ans;return 0;
}

我的提交记录

That's ALL! 😃

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

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

相关文章

2025年反应釜定制厂家实力推荐,看看哪家信誉好?

为帮科研院所、企业实验室高效锁定适配自身需求的反应釜设备合作伙伴,避免选型走弯路,我们从设备核心性能(如控温精度、安全防护)、定制化能力(含工艺适配性、模块化设计)、全周期服务质量(覆盖方案设计到售后维…

HTML5与CSS3 API文档及强大的技术书籍资源包

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025年中国五大内磁喇叭厂家推荐:看哪家品质可靠

本榜单依托电声行业全维度市场调研与真实客户口碑,深度筛选出十家标杆内磁喇叭生产企业,重点考量技术专利、产能规模、认证体系及行业应用案例四大核心维度,为下游企业选型提供客观依据,助力精准匹配适配的内磁喇叭…

2025年度口碑好的金相检测分析服务商TOP5权威推荐:看看

金属材料检测是制造业质量管控的核心环节,而金相检测作为材料医生,能精准识别晶粒缺陷、焊接裂纹等隐患,直接影响产品安全与寿命。2024年行业数据显示,国内金属检测市场规模超300亿元,年增速28%,但32%的企业投诉…

PbootCMS模板如何调用友情链接(PbootCMS友情链接调用指南:标签与参数详解)

友情链接是网站中常见的功能模块,用于展示合作伙伴或推荐站点的链接。在PbootCMS中,通过内置的友情链接标签,可以灵活地调用和展示友情链接信息。本文将详细介绍如何使用PbootCMS的友情链接标签,并提供示例代码。友…

2025温汤镇温泉房产TOP5权威推荐:深度测评指南,甄选度

随着康养度假需求激增,2024年温泉房产市场规模突破600亿元,年增速达38%,但85%的项目仅停留在泡池+按摩的基础服务,同质化严重;同时,23%的购房者投诉集中在社区配套不完善、康养服务缺失、无障碍设计不到位三大痛…

2025年中国五大内磁喇叭工厂推荐:哪家口碑好?

本榜单依托全维度市场调研与真实行业口碑,深度筛选出十家标杆企业,为企业选型提供客观依据,助力精准匹配适配的内磁喇叭供应商伙伴。 TOP1 推荐:深圳市泰声源电子有限公司 推荐指数:★★★★★ 口碑评分:国内首推…

12月最新推荐!宠物饮水机方案商权威排行榜:聚焦智能健康养宠,IoT平台与专业品牌深度解析

随着宠物家庭地位的提升和“它经济”的持续升温,智能养宠已成为不可逆的潮流。智能宠物饮水机,作为解决宠物饮水健康难题的核心产品,正从基础功能型向数据驱动、健康预警的智慧伴侣演进。市场在快速增长的同时,也面…

2025年上海注册公司费用及收费标准TOP5推荐:注册公司流

TOP1 推荐:壹隆注册公司 推荐指数:★★★★★ 口碑评分:上海注册公司领域性价比标杆服务商 专业能力:作为沪上17年老牌财税机构,壹隆注册公司深度整合工商注册全流程资源,核心优势覆盖成本、效率、合规三大创业痛…

PbootCMS模板怎么嵌套引用其他模版文件(PbootCMS 模板嵌套引用其他模板文件的方法)

1. 功能概述 在 PbootCMS 中,可以通过 {include} 标签实现模板文件的嵌套引用。此功能适用于将公共部分(如头部、尾部、侧边栏等)提取到独立文件中,从而提高代码复用性和维护效率。2. 实现方法 方法一:使用 {incl…

PbootCMS如何实现上传的文件使用原名称(PbootCMS 二开实现非图片文件使用原名称保存的方法)

1. 功能概述 PbootCMS 默认会对上传的文件(如图片、文档、压缩包等)进行重命名后保存,但某些场景下(如文档或压缩包),用户可能希望保留文件的原始名称。本文将介绍如何通过二次开发实现非图片类文件使用原名称保…

神州数码AP密码

WL8200-T2室外AP,WEBUI密码为admin/admin,命令行(telnet 端口号23)密码为admin/dcn_debug或wifi_debug,get system detail命令可查看设备信息

2025年五大乳化泵服务厂商推荐排行榜,实力乳化泵供应商选择

在工业生产的心脏环节,乳化泵作为均质乳化的核心设备,其性能直接决定产品品质、生产效率与合规性。然而,市场上80%厂商依赖传统技术陷入低价战、原材料涨价致交付延期、环保政策倒逼技术升级等痛点,让企业在选择乳…

PbootCMS多选按钮前台页面如何循环|内容多选遍历(PbootCMS 多选按钮前台页面循环遍历方法)

1. 功能概述 在 PbootCMS 中,多选字段(如标签、分类等)可以直接输出为一段带英文逗号的字符串,但这种方式不够美观且难以满足前端样式需求。通过 {pboot:checkbox} 标签,可以对多选字段进行循环遍历,从而实现更灵…

2025年五大靠谱的隔离式安全栅推荐,专业实力品牌全解析

在工业自动化领域,隔离式安全栅是保障危险工况信号传输安全的核心设备,直接关系到生产系统的稳定与人员安全。面对市场上鱼龙混杂的产品,如何挑选有实力、专业且靠谱的隔离式安全栅?以下结合行业调研与用户反馈,为…

2025年惠州十大奢侈品名包回收店排行榜,推荐回收价高的奢侈

为帮奢侈品持有者高效锁定附近的高价回收门店,避免遭遇虚报高价后压价鉴定不专业导致价值低估等坑,我们从价格透明度、鉴定专业性、交易安全性、服务便捷性、客户口碑五大维度,对惠州本地15家奢侈品名包回收机构展开…

PBOOTCMS调用时间标签[list:data],怎么调用不显示小时、分、秒

PbootCMS 提供了灵活的时间格式化功能,支持在内容列表页和内容详情页中自定义时间显示格式。通过 style 参数,您可以指定时间的输出样式。二、时间格式化调用方法 1. 内容列表页时间格式化 调用代码:[list:date sty…

2025年惠州口碑好的民办高级中学排行榜,求推荐实力不错的民

为帮助惠州及周边地区家庭精准选择适配孩子成长需求的民办高中,避免择校焦虑与决策偏差,我们从教育质量(入口到出口的培养提升率、特控/本科完成率)、特色办学(科创/体艺课程体系、学生综合素养发展)、师资力量(…

2025年度中国3PE防腐无缝钢管公司排名:诚信的酸洗钝化无

本榜单依托工业管材领域全维度市场调研与真实客户口碑,深度筛选出五家标杆企业,为能源、化工、电力等领域企业选型提供客观依据,助力精准匹配适配的管材供应伙伴。 TOP1 推荐:天津腾昊伟业钢管销售有限公司 推荐指…

2025年度冲锋衣棉服加工厂排名:冲锋衣棉服加工厂哪家售后

为帮助企业高效锁定适配自身需求的冲锋衣棉服定制合作伙伴,避免选型走弯路,我们从生产实力(如面料供应、工艺标准)、售后服务(含售后响应速度、质量问题处理机制)、定制专业度(覆盖行业场景适配、设计能力)及真…