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

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

Easy 小美的外卖订单编号

简要题意

每天的第 个订单起初有编号 ,为防止编号过大,当某个订单编号超过 时就从 开始重新编号。

多次给定 ,询问第 单的编号。

Solution

答案即为

Code

void R()
{
	int q;
	cin>>q;
	while (q--)
	{
		int m,x;
		cin>>m>>x;
		cout<<(x-1)%m+1<<'\n';
	}
	return;
}

Medium 买卖股票的最好时机(一)

简要题意

给定连续 天股票价格,你可以选择至多一天买进一份股票,并在之后选择一天卖出这份股票,求最大收益。

Solution

预处理前缀 与后缀 ,每个位置上二者之差取 即为答案。

Code

void R()
{
	int n,ans=0;
	cin>>n;
	vector<int> p(n),mn(n),mx(n);
	for (int &x:p) cin>>x;
	mn[0]=p[0];
	mx[n-1]=p[n-1];
	for (int i=1;i<n;i++)
		mn[i]=min(mn[i-1],p[i]);
	for (int i=n-2;i>=0;i--)
		mx[i]=max(mx[i+1],p[i]);
	for (int i=0;i<n;i++)
		ans=max(ans,mx[i]-mn[i]);
	cout<<ans;
	return;
}

Hard 数位染色

简要题意

给一个数,问能否将这个数的所有数位分成两份,使得两份内的数的和相等。

Solution

考虑对所有数位做一个背包,如果能取到所有数位之和一半的值,就说明有解。

Code

void R()
{
	i64 x,sum=0;
	cin>>x;
	vector<int> dp(163);
	dp[0]=1;
	for (int t=x%10;x;x/=10,t=x%10)
	{
		for (int i=162;i>=t;i--)
			dp[i]|=dp[i-t];
		sum+=t;
	}
	cout<<(sum%2==0&&dp[sum/2]?"Yes":"No");
	return;
}
#牛客春招刷题训练营#
全部评论

相关推荐

头像
04-17 09:29
已编辑
湖南农业大学 后端
睡姿决定发型丫:本硕末9也是0offer,简历挂了挺多,只有淘天 美团 中兴给了面试机会,淘天二面挂,美团一面kpi面,中兴一面感觉也大概率kpi(虽然国企,但一面0技术纯聊天有点离谱吧)
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务