牛客春招刷题训练营 - 2025.3.25 题解

活动地址:牛客春招刷题训练营 - 编程打卡活动

Easy 构造C的歪

简要题意

找到一个整数 ,使得 排序后构成等差数列。

Solution

是等差邻项,构造下一项就好。

Code

void R()
{
	i64 a,b,c;
	cin>>a>>b;
	if (a>=b) swap(a,b);
	c=2*b-a;
	cout<<c;
	return;
}

Medium 查找两个字符串a,b中的最长公共子串

简要题意

的最长公共子串。若有重复,输出短串中最早出现的那个。

Solution

数据范围很小,暴力枚举长串子串用 hash/map/unordered_map 记录,在短串中从长到短从前到后枚举子串 check 即可。

Code

void R()
{
	map<string,bool> mp;
	string s,t;
	cin>>s>>t;
	if (s.size()<t.size()) swap(s,t);
	int n=s.size(),m=t.size();
	for (int i=0;i<n;i++)
		for (int j=1;i+j<=n;j++)
			mp[s.substr(i,j)]=1;

	for (int j=m;j>=1;j--)
		for (int i=0;i+j<=m;i++)
			if (mp.count(t.substr(i,j)))
			{
				cout<<t.substr(i,j)<<'\n';
				return;
			}
	return;
}

Hard 气球谜题

简要题意

个气球排成一排,每个气球有一个初始颜色,颜色共有三种。

你可以花费 的代价对第 个气球染色,求让所有同色气球连续摆放的最小代价。

Solution

状压 DP。

考虑确定第 个气球的代价需要什么前置条件?

需要确定第 个气球是什么颜色,还要知道之前有没有摆过这个颜色的气球,第 个气球是不是这个颜色。

于是想到设 表示摆完第 个气球,已经摆过气球颜色的状压为 S,第 个气球的颜色是 ,且摆放方案合法的最小代价。

转移方程为:

Code

void R()
{
	int n;
	string s;
	cin>>n>>s;
	vector<int> t(n);
	vector<vector<array<i64,3>>> dp(n,vector<array<i64,3>>(8,{inf,inf,inf}));
	for (int &x:t) cin>>x;
	for (int i=0;i<3;i++)
		if (s[0]=='0'+i)
			dp[0][1<<i][i]=0;
		else
			dp[0][1<<i][i]=t[0];

	//dp[i-1][S][k]->dp[i][S|(1<<j)][j]
	for (int i=1;i<n;i++)
		for (int j=0;j<3;j++)
			for (int k=0;k<3;k++)
				for (int S=0;S<8;S++)
				{
					if ((S>>j&1)&&k!=j)
						continue;
					i64 con=dp[i-1][S][k];
					if (s[i]!='0'+j) con+=t[i];
					dp[i][S|(1<<j)][j]=min(dp[i][S|(1<<j)][j],con);
				}

	i64 ans=inf;
	for (int i=0;i<8;i++)
		for (int j=0;j<3;j++)
			ans=min(ans,dp[n-1][i][j]);
	cout<<ans<<'\n';
	return;
}
#牛客春招刷题训练营#
全部评论

相关推荐

中街牛奶提子:作为一个25届的过来人来看:我给你的建议是,-1-:优化简历,-2-:开始背八股文+刷算法,-3-:海投,我是五月份开始准备找实习的,大概到六月中旬的时候,我的boxx已经点满了2000+,所以不是你的实习不行,而是你没有真正意义上的“海投”。-4-:实习岗位选择我只建议你去Java开发岗位,在实习过程中,你可以学习到的关于开发的链路以及开发的流程是和个人的学习demo项目不能比的,不建议去以下岗位:“客户端、软件实施、Python、数据类、低代码开发、二次开发、对日开发、php等”岗位,看着像是找到了一个实习能积攒经验,但对于Java这个就业环境来看,你这种实习没用,别人基本在秋招是一两段的Java实习,你可能在简历筛选的时候,就被比下去了(golang开发这个实习岗位除外,这个实习岗位在投递Java的时候,还是没问题的,但是也最好是第二段实习经历是golang,而不是你只有一段实习经历,这段经历是golang。第一段实习经历,只建议找Java后端开发)。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务