Advertisement

Dec 12, 2021 NWERC H-Heating Up 二分单调栈

阅读量:

传送门

在这里插入图片描述

题目描述:假设有n片披萨,每片具有特定的辣度数值。只有当个人耐受力不低于某片披萨的辣度时,才能食用该片披萨。同时,食用后耐受力将增加该片披萨的辣度值。初始时可任意选择一片作为起点,但后续只能选择与当前所吃披萨相邻的片进行食用。目标是确定在吃完所有披萨的前提下,所需的最小初始耐受力数值。

解题思路:首先将披萨的辣度序列视为一个环状结构,随后采用二分查找结合单调栈的方法来确定初始耐受力的最小值。由于若初始耐受力为x时能够完成全部食用,则x+1同样可以完成任务,因此可以通过二分法进行搜索。单调栈则用于模拟暴力匹配过程以判断当前耐受力是否满足条件。

注意事项:在完成所有披萨食用后,最终获得的耐受力数值可能会超出long long类型的存储范围。

代码:

复制代码
    #include<bits/stdc++.h>
    using namespace std;
    
    #define fi first
    #define se second
    #d

全部评论 (0)

还没有任何评论哟~