首页 > 其他分享 >【刷题笔记】2024.10.4 test

【刷题笔记】2024.10.4 test

时间:2024-10-04 17:12:52浏览次数:7  
标签:2024.10 minn int 最大值 最小值 maxn ans test 刷题

2024.10.4 test

虹色的北斗七星

思路

题目要求

\[maxn-minn-len \]

的最大值,其中\(maxn\)为区间的最大值,\(minn\)为区间的最小值,\(len\)为区间的长度
注意性质,最优的状态一定是区间的左右端点为最大值和最小值时。因为,如果区间左右端点不为最大值或最小值,那么区间长度就可以继续缩短,所以一定不是最优状态。
此时公式就可以写成

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

或者

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

因为右端点既可以为最大值,也可以为最小值,所以出现了两个公式。
!!!重点
将公式变形就可以得到

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

或者

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

于是问题就变成了求最大的\(a[i]-i\)或者是最大的\(a[i]+i\)减去最小的\(a[i]-i\)或者是最小的\(a[i]+i\)
1.钦定当前点\(i\)的\(a[i]-i\)为最大值
求前缀最小值,再带入公式计算
2.钦定当前点\(i\)的\(a[i]+i\)为最小值
求前缀最大值,再带入公式计算

坑点

!!! 当前缀最值是当前点的时候答案为\(-1\),所以\(ans\)最好初始化为\(-INF\)

code

`#include<bits/stdc++.h>

define maxn 4000010

using namespace std;
int a[maxn],n;
int f[maxn],ans=0;
int maxx=0,minn=2147483647;
int main(){
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
f[i]=a[i]+i;
}
for(int i=1;i<=n;i++){
maxx=max(maxx,f[i]);
ans=max(ans,maxx-f[i]);
f[i]=a[i]-i;
}
for(int i=1;i<=n;i++){
minn=min(minn,f[i]);
ans=max(ans,f[i]-minn);
}
cout<<ans-1;
return 0;
}`

标签:2024.10,minn,int,最大值,最小值,maxn,ans,test,刷题
From: https://www.cnblogs.com/GSNforces/p/18446861

相关文章

  • The 2024 CCPC Shandong Invitational Contest and Provincial Collegiate Programmin
    Preface传说中被杭电1h十题的比赛,结果打到结束也只会10题这场开局就不太顺,一个Easy题C卡到2h的时候才出,虽然中期题基本都能想到但还是出的很慢最后1h讨论了下L的大致做法发现了几个关键性质后觉得写不完了,遂摆烂滚去打炉石了A.Printer签到,二分答案大力检验即......
  • 2024.10.[2, 3]训练记录
    10.2上午noip模拟比赛是8:00开始的,人是8:40起床的。T1猜了结论,秒了。结论是,一开始按照倒序排,连续是\(1\)的段\(reverse\)成正序。这样逆序对最多。感觉做法太简单\(O(n\logn)\)肯定不放。于是想了\(O(n)\)做法。最开始有\(\dfrac{n*(n-1)}{2}\)个逆序对,按段考虑......
  • The 2021 ICPC Asia Shenyang Regional Contest
    B-BitwiseExclusive-ORSequence题意\(n\)个数,\(m\)个关系,每个关系形如\(a_u⊕a_v=w\),表示第\(u\)个数与第\(v\)数的异或运算结果为\(w\)。求是否有这样的\(n\)个数满足所有关系要求,如果没有输出\(-1\),如果有输出所有满足要求的方案中,所有数字的和的最小值。思路建图......
  • Skills - 2022 International Collegiate Programming Contest, Jinan Site, Problem
    有3种技能,\(n(\le10^3)\)天内每天可以对一个技能进行学习,第i天学习第j个技能可以为第j个技能增加\(a_{i,j}(\le10^4)\)的熟练度。在第i天结束时,每个技能的熟练度会减去距离上次学习该技能的天数,但最多减到0。求n天后能得到的熟练度的和的最大值。首先容易有一个显然的dp状态:\(f......
  • AtCoder Beginner Contest 373
    省流版A.暴力即可B.求出字母位置,绝对值相加即可C.显然答案为两个数组的最大值的和D.注意直接BFS的点权范围不超过题目范围,直接BFS即可E.发现单调性,二分票数,用前缀和\(O(1)\)判断可行性即可F.朴素背包DP,相同重量的物品一起考虑,用优先队列求解\(l\)个相同重量物品最大......
  • The 2023 ICPC Asia Macau Regional Contest
    A.(-1,1)-Sumplete首先只取\(-1\),这样的话选1和不选-1产生的贡献就是都是+1。枚举每一行,然后贪心选择需求最大的若干列。#include<bits/stdc++.h>usingnamespacestd;usingi32=int32_t;usingi64=longlong;#defineinti64usingvi=vector<int>;usingpi......
  • The 2024 Guangdong Provincial Collegiate Programming Contest
    Preface这场据说题挺毒的?但实际打的时候感觉也还好,3h就出了7个题,然后被H卡飞了赛后发现是没有观察到构造的解的性质,把Dinic换成匈牙利就过了,只能说对flow的理解不够B.腊肠披萨神秘string题,被徐神开场一眼秒了,虽然中间我和祁神上去写了三个签到,但徐神还是在1h不......
  • 2024.10 - 做题记录与方法总结
    赏赐的是CCF,收回的也是CCF-《CCF圣经》2024/10/01国庆快乐!P10856【MX-X2-T5】「CfzRound4」Xor-Forces题面:题目描述给定一个长度为\(n=2^k\)的数组\(a\),下标从\(0\)开始,维护\(m\)次操作:操作一:给定\(x\),设数列\(a'\)满足\(a'_i=a_{i\oplusx}\),将\(a\)......
  • 2024.10.1 总结(集训;数据结构 主要是线段树)
    XK又来给我们讲课了。开心!1.Baka'sTrick两种理解:双栈模拟队列。[找到若干个划分点,使得每个区间包含恰好一个划分点。维护划分点到划分点段的前缀、后缀信息。在在线的实现中,在队列中维护仅仅一个划分点,维护它到前面每个点和它到后面每个点的信息。当这个划分点出队时,把队......
  • AtCoder Beginner Contest 365
    A-LeapYear思路模拟即可;AC代码#include<bits/stdc++.h>#defineendl'\n'#defineintintlonglong#definepbpush_back#definebsbitsetusingnamespacestd;typedefpair<char,int>PCI;typedefpair<......