2020美团笔试部分题解(4.9)

这篇博客分享了作者在2020年美团笔试中的五道大题解题思路。第一题涉及日期时间计算,通过暴力法求解。第二题是关于跑步比赛的,通过双循环判断超车情况。第三题采用二分查找法解决。第四题为四面体路径问题,通过动态规划求解。第五题是一道字符串集合操作题,作者尝试了暴力解法但未成功。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

美团笔试全是大题,还是比较适合我的,一共五题。

第一题

题意

给你一个日期包星期几以及时和分,然后一个时间n,问n分钟之前是星期几和几时几分。

分析

暴力一点,数据也不大,先算出当前的总分钟,然后减去n,不断+1440直到为正。注意一下格式,输出的时候要补0。

代码

#include <cstdio>
#include <iostream>
using namespace std;

int x, h, m, n, t;

int main() {
   
	scanf("%d",&x);
	scanf("%d:%d",&h,&m);
	scanf("%d",&n);
	t=h*60+m;
	t-=n;
	while (t<0) {
   
		t+=1440;
		x--; if (x==0) x=7;
	}
	printf("%d\n",x);
	h=t/60; m=t%60;
	if (h<10) printf("0%d:",h);
	else printf("%d:",h);
	if (m<10) printf("0%d\n",m);
	else printf("%d\n",m);
	return 0;
}

第二题

题意

有1e5个人跑步,给一个数组a,a[i]表示第i个出发的人是谁,数组b,b[i]表示第i个到达的人是谁。求超过别人的人有多少?

分析

这个题的数据我严重怀疑是假的,一开始想了一会,没啥太多想法,然后准备暴力做一下,O(n^2)复杂度,没想到直接过了,很奇怪。
用一个map记录编号为i的人出发的次序,用另一个map记录编号为i的人到达的次序。两重循环,判断第i个人有没有超过别人,遍历j个人,如果第i个人开始比j晚,结束比j早那么就超过了别人,答案+1。

#include <cstdio>
#include <iostream>
#include <map>
using nam
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值