首页 > 其他分享 >题解:CF2057D Gifts Order

题解:CF2057D Gifts Order

时间:2025-01-06 09:23:10浏览次数:6  
标签:CF2057D 答案 题解 最大值 Gifts 最小值 端点 区间 长度

传送门

Statement

单点修改,全局查询所有 \([l,r]\) 中区间极差减去区间长度的最大值,多组数据。

Solution

首先,如果区间的最大 / 最小值出现在区间中间,区间长度的改变并不会对其造成影响,反之,当最大值出现在区间左右端点时,区间长度改变可能会产生影响。

在保证区间最大 / 最小值存在于区间端点同时需要保证区间长度最小,这样为最优方案。

设区间最小值在右端点,最大值在左端点,答案:

\[(a_l - a_r) - (r - l) = (a_l + l) - (a_r + r) \]

最小值在左端点,最大值在右端,答案:

\[(a_r - a_l) - (r - l) = (a_r - r) - (a_l - l) \]

我们令 \(x_i = a_i - i,y_i = a_i + i\),最后答案:

\[\max\{\max_{l<r}\{x_r - x_l\},\max_{l<r}\{y_l - y_r\}\} \]

区间最大 / 最小值可以拿线段树维护,然后再维护一个答案即可。

code

Submission

标签:CF2057D,答案,题解,最大值,Gifts,最小值,端点,区间,长度
From: https://www.cnblogs.com/Ayaka-0928/p/18654383

相关文章

  • 题解:CF2057B Gorilla and the Exam
    传送门Statement给定数组\(a\),定义每次操作为选择区间\([l,r]\),记\(x=\min_{l\leqi\leqr}{a_i}\),删除区间内所有\(a_i=x\),给你\(k\)次修改的机会,每次修改某一个位置的数,问最少需要几次操作使得原数组全为\(0\)。Solution最初不做任何修改的操作次数定为原数组中......
  • Linux服务器无Root权限安装Cuda方法及问题解决
    CUDA简介什么是CUDA?CUDA(ComputeUnifiedDeviceArchitecture)是由NVIDIA提供的一种并行计算平台和编程模型,用于加速计算密集型任务。CUDA允许开发者使用GPU的计算能力,通过并行处理来快速执行复杂的计算任务。CUDA包括以下主要组成部分:CUDAToolkit:为开发人员提供工......
  • 题解:UVA10482 The Candyman Can
    UVA10482TheCandymanCan思路记总重量为\(sum\)。因为\(n\le32\)所以可以暴力。使用动态规划,\(dp_{i,j}\)代表第\(1\)组重量为\(i\),第\(2\)组重量为\(j\)(则第\(3\)组重量为\(sum-i-j\))是否可以达到。最后再暴力枚举取所有\(\max(i,j,sum-i-j)-\min(i,j,sum-......
  • LOJ #3273. 「JOISC 2020 Day1」扫除 题解
    Description平面直角坐标系上一个等腰直角三角形,维护\(4\)种操作:加入\((x,y)\)。把\(y\leql\)的点横坐标变成\(\max⁡(x,n-l)\)。把\(x\leql\)的点纵坐标变成\(\max(y,n-l)\)。查询第\(i\)个点现在的位置。\(1\leqn\leq10^9,1\leqm\leq5\times10^5,1\le......
  • 整数序列的元素最大跨度值题解
    【题目要求】求出n个数中的最大跨度值(最大值-最小值)。一、求出最大值如果a比最大值(max)还要大,那么最大值(max)就变成a,最后max就是n个数中最大的数。二、求出最小值如果a比最小值(min)还要小,那么最小值(min)就变成a,最后min就是n个数中最小的数。【题解代码】#include<bits/stdc++.h>usin......
  • D. World is Mine 题解(动态规划, 思维)
    原题链接:https://codeforces.com/contest/1987/problem/D思路:动态规划,思维。A,B两人吃蛋糕,A吃的蛋糕要求美味度单调递增,所以决定她吃的蛋糕多少就是吃到的蛋糕美味度的种数。对于答案,A从美味度最小的开始吃,吃到该美味度的一块即有效,而B需要将这个美味度的所有蛋糕都吃掉才有......
  • B. 树上的回忆 (memory) 题解
    \(dis(i,j)\)有两种转换方式,第一种是统计每条边被经过了多少次,第二种是变成\(\sum_{i=l}^{r}\sum_{j=l}^{r}dep(lca(i,j))\)。这里采用第二种(因为第一种寄了)。先考虑暴力,采取换根DP:把\([l,r]\)建一棵虚树。对于一个点\(x\)尝试计算\(\sum_{y}dep(lca(x,y))\)。\(y\)......
  • Codeforces 319B Psychos in a Line 题解 [ 绿 ] [ 单调栈 ] [ 动态规划 ] [ adhoc ]
    PsychosinaLine:很好的单调栈优化dp题!观察我们先观察,一个精神病人会一直杀到什么时候。显然,会杀到右边第一个比他大的精神病人那里,然后他就杀不动了。因此我们可以从右往左考虑,算出左边的精神病人杀掉这个精神病人后左边的人的答案是什么。假设左边的人目前已经刀了\(x\)......
  • 题解:AT_abc203_e [ABC203E] White Pawn
    由于\(m\le2\times10^{5}\),所以可以把有黑格子的行扔到一个map里面,然后再用一个set存储当前能走到哪些格子。按照题意暴力转移,开两个vectorin和out,分别存储哪些格子要删掉,哪些格子要加入。#include<bits/stdc++.h>#definelllonglongusingnamespacestd;int......
  • [WC2014] 紫荆花之恋 题解
    啊啊啊啊啊啊啊啊啊啊啊我终于改完啦啊啊啊啊啊啊啊。因为没有在最开始的时候将所有点设置为已经重构的,所以直接\(R15-R70\)间卡了两三天。似乎也是我第一次大规模使用指针了。这道题假如只有一次询问,就是一道简单淀粉质,直接在根节点建立平衡树,记录\(r_x-dis(x,rt)\),然后找......