CF1407D Discrete Centrifugal Jumps dp


题意:如图
思路:单调栈维护某个点的前驱节点有多少个,设置f[i],定义为跳到i这个位置最少跳的次数。然后我们考虑一下什么时候可以跳 1:两边比中间都大,并且左边比右边大 2:两边比中间大,并且右边比左边大 3:两边比中间小,并且右边比左边大 4:两边比中间小,并且左边比右边大。维护四个单调栈。

#include<iostream>
#include<cstring>
#include<queue>
#include<algorithm>
#include<cstdio>
using namespace std;
typedef long long ll;
#define pb push_back
const int N=300010;
int h[N];
int stk[N];	//左边比它大或者等于的第一个位置
int stk2[N];//左边比它小或者等于的第一个位置
int stk3[N];
int stk4[N];
int top;
int f[N];
vector<int>p[N];
int main()
{
   		
	int n;
	cin >> n ;
	for(int i=1;i<=n;i++)
		cin>>h[i];
	stk[top]=-1;
	for(int i=1;i<=n;i++)
	{
   
		while(top && h[stk[top]]<h[i])
			top--;
		p[i].pb(stk[top]);
		stk[++top]=i;
	}
	top=0;
	stk3[top]=-1;
	for(int i=n;i>=1;i--)
	{
   
		while(top && h[stk3[top]]<h[i])
			top--;
		if(stk3[top]!=-1)
		p[stk3[top]].pb(i);
		stk3[++top]=i;
	}
	top=0;
	stk4[top]=-1;
	for(int i=n;i>=1;i--)
	{
   
		while(top && h[stk4[top]]>h[i])
			top--;
		if(stk4[top]!=-1)
		p[stk4[top]].pb(i);
		stk4[++top]=i;
	}
	top=0;
	stk2[top]=-1;
	for(int i=1;i<=n;i++)
	{
   
		while(top && h[stk2[top]]>h[i])
			top--;
		p[i].pb(stk2[top]);
		stk2[++top]=i;
	}
	memset(f,0x3f,sizeof f);
	f[1]=0;
	for(int i=2;i<=n;i++)
	{
   
		f[i]=f[i-1]+1;
		for(auto x:p[i])
		{
   
			if(x==-1)
				continue;
			f[i]=min(f[i],f[x]+1);
		}
	}
	//cout<<f[7]<<endl;
	cout<<f[n]<<endl;
	return 0;

}
codeforce 文章被收录于专栏

写写cf的题解啥的

全部评论

相关推荐

2025-12-31 19:23
已编辑
门头沟学院 Java
ssob是已读不回的,字节是压根不敢投的,简历是反反复复改了N遍的,八股是永远背不完的😅😅😅扯远了,道心破碎了,把简历发出来让大伙先看看笑话。再说正事。寒假日常实习还是很难找,连个面试都难约,我不是个例,这是网上普遍反映。不报希望了,趁着2、3月前赶紧做些什么才是。扔几个碎碎念:1.这破简历还能怎么改?写到什么程度才能过实习岗筛选?广大牛友来锐评一下2.火速辅修go,是否可行目前看来是学习成本最小的。首先,很多go实习岗位已经明确要求掌握gin等技术栈,拿java简历投go的时代已经过去了。其次,很多后端的东西,MySQL、Redis这些都是通用的,不用重新学。所以这个问题就具体为:2.1&nbsp;java&amp;go混血简历怎么写第一个项目,仿大麦的微服务,不太好改。因为有用到Redisson、AOP、SpringAI这些java强相关的东西,包装成go需要替换这些方案。第二个,点评魔改。应该可以包装成go,github上也有人用go重写过。2.2&nbsp;java&amp;go通用的轮子RPC直接pass了,太烂大街了。不知道动态线程池能不能做。反正项目上新有风险,不一定来得及,非必要就不开新的项目。补充:别跟我扯RAG了,这玩意已经成新的烂大街了,详见我上一篇的吐槽。3.认真学微调prompt什么的这个半步踩进算法了已经。八股和场景题完全就是另一套,没两三个月搞不定的。约等于换方向
简历中的项目经历要怎么写
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
01-15 20:52
黑皮白袜臭脚体育生:五宿大战是吧,死去的记忆还在攻击我
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务