8.13米哈游笔试(2/3)

T1

分别计算上下和左右移动的最小距离,取min即可

void solve(int u){
    cin>>n>>m;
    int a,b,c,d,e,f;
    cin>>a>>b>>c>>d>>e>>f;
    ll x=min(abs(a-c),n-abs(a-c)),y=min(abs(b-d),m-abs(b-d));
    ll x1=min(abs(c-e),n-abs(c-e)),y1=min(abs(d-f),m-abs(d-f));
    cout<<x1+x+y+y1<<endl;
}

T2

对于非叶子节点贡献+1

对于叶子节点,设叶子节点深度为d 贡献+(k-d+1)

#include <bits/stdc++.h>
using namespace std;
typedef pair<int, int>PII;
#define x first
#define y second
typedef long long ll;
const int N = 2E5 + 10, mod = 1e9 + 7;
int T, w[N], n,k;
vector<int>g[N];
int d[N];
ll res;
void dfs(int u,int fa,int d){
    if(g[u].size()==1&&g[u][0]==fa){
        if(d<=k){
            res+=k-d+1;
        }
        return;
    }
    if(d<=k)res++;
    for(int &x:g[u]){
        if(x==fa)continue;
        dfs(x,u,d+1);
    }
}
void solve(int u) {
    cin>>n>>k;
    for(int i=1;i<n;i++){
        int a,b;
        cin>>a>>b;
        g[a].push_back(b);
        g[b].push_back(a);
    }
    dfs(1,-1,0);
    cout<<res<<endl;

}
int main() {
    T = 1;
    for (int i = 1; i <= T; i++) {
        solve(i);
    }
    return 0;
}

T3

期望DP 笔试的时候没推出来,纯菜呜呜

#米哈游笔试##秋招##后端开发##互联网大厂#
互联网笔试真题题解 文章被收录于专栏

收录近两年互联网公司笔试真题解析,并提供Java,Python,C++三种语言版本的代码

全部评论
我靠,看完楼主第一题醍醐灌顶,就是昨天美团第二题的二维形式,我想复杂了,一直在哪模拟跳边界,只过了30,靠
1
送花
回复
分享
发布于 2023-08-13 22:20 上海
同学,阿里控股集团JAVA开发岗投吗?我们和其他业务集团独立招聘,可以多次机会。需要的话,可以联系我。
1
送花
回复
分享
发布于 2023-08-14 19:37 浙江
滴滴
校招火热招聘中
官网直投
2题原来要直接作差 我真给接上了… 怪不得内存超限
点赞
送花
回复
分享
发布于 2023-08-13 22:17 山东
佬!
点赞
送花
回复
分享
发布于 2023-08-13 22:38 江苏
求解答:为啥第二题只考虑单向边不对呢
点赞
送花
回复
分享
发布于 2023-08-13 23:32 江苏
大佬,第二题为什么 对于叶子节点,设叶子节点深度为d 贡献+(k-d+1)而不是单纯的加新节点(+1)呢
点赞
送花
回复
分享
发布于 2023-08-14 09:48 山东

相关推荐

5 14 评论
分享
牛客网
牛客企业服务