【刷题节】美团2024年春招第一场笔试【技术】

news2024/11/16 21:30:27

在这里插入图片描述

1.小美的平衡矩阵

在这里插入图片描述

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int[][] nums = new int[n][n], sum = new int[n][n];
        char[] chars;
        for (int i = 0; i < n; i++) {
            chars = scanner.next().toCharArray();
            for (int j = 0; j < n; j++) {
                nums[i][j] = chars[j] - '0';
                if ( i != 0 &&
                        j != 0)sum[i][j] = sum[i][j - 1] + sum[i - 1][j] - sum[i - 1][j - 1] +
                        nums[i][j];
                else if (i != 0)sum[i][j] = sum[i - 1][j] + nums[i][j];
                else if (j != 0)sum[i][j] = sum[i][j - 1] + nums[i][j];
                else sum[i][j] = nums[i][j];
            }
        }
        int res = 0;
        int tar = 0;
        for(int i = 0;i<n;i++){
            if(i%2==0) System.out.println(0);
            else{
                for (int j = i; j < n; j++) {
                    for (int w = i; w < n; w++) {
                        if (j == i && w == i)tar = sum[j][w];
                        else if (j == i)tar = sum[j][w] - sum[j][w - i - 1];
                        else if (w == i)tar = sum[j][w] - sum[j - i - 1][w];
                        else tar = sum[j][w] - sum[j][w - i - 1] - sum[j - i - 1][w] + sum[j - i - 1][w
                                    - i - 1];
                        if (tar == (i + 1) * (i + 1) / 2)res++;
                    }
                }
                System.out.println(res);
                res = 0;
                }

            }



    }
}

2. 小美的数组询问

在这里插入图片描述

import java.util.Scanner;
import java.io.*;
public class Main {
    public static void main(String[] args) throws IOException {
        StreamTokenizer in=new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
        in.nextToken();int n=(int)in.nval;
        in.nextToken();int q=(int)in.nval;
        int[] arr = new int [n];
        long sum = 0l;
        long a = 0;
        for (int i = 0; i < n; i++) {
            in.nextToken();
            arr[i] = (int)in.nval;
            if(arr[i]==0) a++;
            sum += (long)arr[i];
            
        }
        for (int i = 0; i < q; i++) {
            in.nextToken();
            int  left = (int)in.nval;
            in.nextToken();
            int right = (int)in.nval;
            System.out.print(sum+a*left);
            System.out.print(" ");
            System.out.println(sum+a*right);
            
        }

    }
}

3.小美的 MT

在这里插入图片描述

import java.util.Scanner;
import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException {
//        StreamTokenizer in=new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
//        in.nextToken();int n=(int)in.nval;
//        in.nextToken();int q=(int)in.nval;
        StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
        in.nextToken();int n = (int) in.nval;
        in.nextToken();int k = (int) in.nval;
        in.nextToken();String string = in.sval;
        int sum = 0;
        for(int i = 0;i<string.length();i++){
            if(string.charAt(i)=='M'||string.charAt(i)=='T'){
                sum++;
            }
        }
        System.out.println(sum+k>=n?n:sum+k);

    }
}
import java.util.Scanner;

public class Main {
    static final int maxn = 100010;

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int q = scanner.nextInt();
        int[] a = new int[maxn];
        long cnt = 0;
        long sum = 0;
        for (int i = 1; i <= n; ++i) {
            a[i] = scanner.nextInt();
            if (a[i] == 0) {
                cnt++;
            } else {
                sum += a[i];
            }
        }
        while (q-- > 0) {
            int l = scanner.nextInt();
            int r = scanner.nextInt();
            System.out.println((sum + l * cnt) + " " + (sum + r * cnt));
        }
    }
}

4.小美的朋友关系

在这里插入图片描述

关键词:并查集、逆序、栈、类、方法重写、集合

这题考到我的智商盲点的,我们需要维护一个并查集来记录朋友关系,这题难点就在于后期会存在遗忘的情况,但是并查集只有合并操作,没有删除操作,由于进行了路径压缩,因此删除的时候难以确定应该修改哪些节点。但是我们可以逆向操作,我们可以逆向遍历查询,遇到删除操作如果是逆序的话则是合并操作,这样就能用并查集进行处理了。确定了大方向后,我们首先读入初始化的边存入数组和集合中,然后存储后期的查询,然后对应后期遗忘的边存入集合方便后续判断。然后才开始初始化关系,注意后期要删除的边不要初始化。然后在存储查询的时候要注意,遗忘中可能包括不是初始化时的操作,是间接关系,是不需要执行并操作的,然后也会出现重复的遗忘,我们要执行加边的是第一次出现的遗忘,因此需要将重复的遗忘从查询中删除。然后要注意重写类的equals方法,传入的参数需要与父类一致,都是Object类,然后hashcode也需要重写,否则集合会判断两者不一样。

import java.util.*;

public class Main {
    static Map<Integer, Integer> fa = new HashMap<>();
    static Set<Pair> fr = new HashSet<>();
    static List<Pair> qs = new ArrayList<>();
    static List<String> ans = new ArrayList<>();

    static class Pair {
        int first;
        int second;
        int third;

        Pair(int first, int second) {
            this.first = first;
            this.second = second;
        }

        Pair(int first, int second, int third) {
            this.first = first;
            this.second = second;
            this.third = third;
        }

        @Override
        public boolean equals(Object o) {
            if (this == o) return true;
            if (o == null || getClass() != o.getClass()) return false;
            Pair pair = (Pair) o;
            return first == pair.first && second == pair.second && third == pair.third;
        }

        @Override
        public int hashCode() {
            return Objects.hash(first, second, third);
        }
    }

    static int find(int x) {
        if (!fa.containsKey(x)) return x;
        fa.put(x, find(fa.get(x)));
        return fa.get(x);
    }

    static void merge(int x, int y) {
        x = find(x);
        y = find(y);
        if (x != y) {
            fa.put(x, y);
        }
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int m = scanner.nextInt();
        int q = scanner.nextInt();
        for (int i = 0; i < m; i++) {
            int u = scanner.nextInt();
            int v = scanner.nextInt();
            fr.add(new Pair(u, v));
        }
        for (int i = 0; i < q; i++) {
            int op = scanner.nextInt();
            int u = scanner.nextInt();
            int v = scanner.nextInt();
            if (op == 1) {
                fr.remove(new Pair(u, v));
            }
            qs.add(new Pair(op, u, v));
        }
        Collections.reverse(qs);
        for (Pair pair : fr) {
            merge(pair.first, pair.second);
        }
        for (Pair pair : qs) {
            if (pair.first == 1) {
                merge(pair.second, pair.third);
            } else {
                ans.add(find(pair.second) == find(pair.third) ? "Yes" : "No");
            }
        }
        Collections.reverse(ans);
        for (String s : ans) {
            System.out.println(s);
        }
    }
}

5.小美的区间删除

在这里插入图片描述
小美拿到了一个大小为n的数组,她希望删除一个区间后,使得剩余所有元素的乘积末尾至少有k个 0。小美想知道,一共有多少种不同的删除方案?

关键词:数学、前缀和、滑动窗口

这题我只想到了使用前缀和来解决,因此会遇到乘法太大导致溢出的问题,当时还打算使用BigDecimal来解决,原来是自己想的简单了。这题除了前缀和,还考了数学问题,实际上能够得到10的倍数只与2和5的个数相关,其他因子对这个不产生影响。因此我们只需对数组中每个数进行分解,看里面包含多少个2和5,然后用前缀和的方式记录。然后就使用滑动窗口来寻找可以删除的区间。判断条件是这个剩下的区间的2和5的最小值与k进行比较,因为一个2和一个5相乘就是10,那么2和5的最小值就是末尾为零的个数。

import java.util.*;

public class MaxCase {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int k = in.nextInt();
        long[] pre2 = new long[n+1];
        long[] pre5 = new long[n+1];
        int cnt2,cnt5,temp;

        for(int i=0;i<n;i++){
            temp = in.nextInt();
            cnt2=0;
            cnt5=0;
            for(int x=temp;x%2==0;x/=2) cnt2++;
            for(int x=temp;x%5==0;x/=5) cnt5++;
            pre2[i+1] = pre2[i] + cnt2;
            pre5[i+1] = pre5[i] + cnt5;
        }

        long res = 0;
        for(int i=0,j=0;i<n;i++){
            while(j<n){
                long remain2 = pre2[n] - pre2[j+1] + pre2[i];
                long remain5 = pre5[n] - pre5[j+1] + pre5[i];
                if(Math.min(remain2,remain5)<k) break;
                j++;
            }
            res += Math.max(j-i, 0);
        }

        System.out.println(res);
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1515580.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Prompt Engineering(提示工程)

Prompt 工程简介 在近年来&#xff0c;大模型&#xff08;Large Model&#xff09;如GPT、BERT等在自然语言处理领域取得了巨大的成功。这些模型通过海量数据的训练&#xff0c;具备了强大的语言理解和生成能力。然而&#xff0c;要想充分发挥这些大模型的潜力&#xff0c;仅仅…

【Python】新手入门学习:详细介绍单一职责原则(SRP)及其作用、代码示例

【Python】新手入门学习&#xff1a;详细介绍单一职责原则&#xff08;SRP&#xff09;及其作用、代码示例 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyT…

【深度学习】YOLOv9继续训练——断点训练方法

YOLOv9继续训练主要分为两个情况&#xff1a; 其一、训练过程中意外中断&#xff0c;未完成训练预期的epoch数量&#xff1b; 其二、训练完了&#xff0c;但是未收敛&#xff0c;在这个基础上&#xff0c;还想用这个权重、学习率等参数继续训练多一些轮次 一、训练过程中意外…

梦百合将在深圳展发布定制新品牌“榀至”

3月17日,下午2点,蓄势已久的梦百合定制品牌发布会将在深圳时尚家居设计周暨深圳国际家具设计展隆重召开!这将是梦百合旗下定制品牌——“榀至”的首度亮相! 发布会主题为“0压升级定制生活”,诠释着梦百合0压生活方式的拓展和延伸。 作为0压概念的提出者、0压绵专利的拥有者,十…

CMOS低噪声运算放大器D721-D722-D724对比分析

一 应用领域 D721、D722、D724是芯谷科技推出的三款低噪声、轨至轨运算放大器芯片&#xff0c;其中D721为单运放&#xff0c;D722为双运放&#xff0c;D724为四运放。适合用于音频领域、传感器等的信号放大处理&#xff0c;比如K歌宝、音响、测距、滤波器、AD转换器前级信号处…

OWASP TOP 10漏洞原理和应对策略

1. 注入 当将不受信任的数据作为命令或查询的一部分发送到解释器时&#xff0c;会发生注入缺陷&#xff0c;例如SQL&#xff0c;NoSQL&#xff0c;OS和LDAP注入。攻击者的敌对数据可能会诱使解释器执行未经预期的命令或未经适当授权而访问数据。 2. 失效的身份验证 与身份验…

通过日志恢复sql server数据库

在SQL Server中&#xff0c;通过日志恢复数据库是一个精细的过程&#xff0c;主要用于在数据库出现错误、数据丢失或需要回滚到特定时间点时恢复数据。以下是一般步骤概述&#xff1a; 设置恢复模式&#xff1a; 首先&#xff0c;数据库必须配置为“完整恢复模式”或“大容量…

基于深度学习的图像去雨去雾

基于深度学习的图像去雨去雾 文末附有源码下载地址 b站视频地址&#xff1a; https://www.bilibili.com/video/BV1Jr421p7cT/ 基于深度学习的图像去雨去雾&#xff0c;使用的网络为unet&#xff0c; 网络代码&#xff1a; import torch import torch.nn as nn from torchsumm…

人工智能迷惑行为大赏——需求与科技的较量

目录 前言 一、 机器行为学 二、人工智能迷惑行为的现象 三、产生迷惑行为的技术原因 四、社会影响分析 五、解决措施 总结 前言 随着ChatGPT热度的攀升&#xff0c;越来越多的公司也相继推出了自己的AI大模型&#xff0c;如文心一言、通义千问等。各大应用也开始内置…

Netty架构详解

文章目录 概述整体结构Netty的核心组件逻辑架构BootStrap & ServerBootStrapChannelPipelineFuture、回调和 ChannelHandler选择器、事件和 EventLoopChannelHandler的各种ChannelInitializer类图 Protocol Support 协议支持层Transport Service 传输服务层Core 核心层模块…

多维时序 | Matlab实现VMD-CNN-GRU变分模态分解结合卷积神经网络门控循环单元多变量时间序列预测

多维时序 | Matlab实现VMD-CNN-GRU变分模态分解结合卷积神经网络门控循环单元多变量时间序列预测 目录 多维时序 | Matlab实现VMD-CNN-GRU变分模态分解结合卷积神经网络门控循环单元多变量时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现VMD-CN…

软件测试面试都问了什么?中级软件测试岗面试(4面)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 一面&#xff08;…

Excel判断CD两列在EF两列的列表中是否存在

需求 需要将CD两列的ID和NAME组合起来&#xff0c;查询EF两列的ID和NAME组合起来的列表中是否存在&#xff1f; 比如&#xff0c;判断第二行的“123456ABC”在EF的第二行到第四行中是否存在&#xff0c;若存在则显示Y&#xff0c;不存在则显示N 实现的计算公式 IF(ISNUMBER…

全视智慧机构养老解决方案,以科技守护长者安全

2024年2月28日凌晨1时许&#xff0c;在上海浦东大道的一家养护院四楼杂物间内发生了一起火灾事故。尽管火势不大&#xff0c;过火面积仅为2平方米&#xff0c;但这场小火却造成了1人死亡和3人受伤的悲剧。这一事件再次提醒我们&#xff0c;养老院作为老年人聚集的场所&#xff…

阿里云免费证书改为3个月,应对方法很简单

情商高点的说法是 Google 积极推进90天免费证书&#xff0c;各服务商积极响应。 情商低点的话&#xff0c;就是钱的问题。 现在基本各大服务商都在2024年停止签发1年期的免费SSL证书产品&#xff0c;有效期都缩短至3个月。 目前腾讯云倒还是一年期。 如果是一年期的话&#x…

关于微服务跨数据库联合查询的一些解决思路

微服务架构的一个非常明显的特征就是一个服务所拥有的数据只能通过这个服务的API来访问。通过这种方式来解耦&#xff0c;这样就会带来查询问题。以前通过join就可以满足要求&#xff0c;现在如果需要跨多个服务集成查询就会非常麻烦。 解决思路 下面提供几个思路仅供参考 表…

在centOS服务器安装docker,并使用docker配置nacos

遇到安装慢的情况可以优先选择阿里镜像 安装docker 更新yum版本 yum update安装所需软件包 yum install -y yum-utils device-mapper-persistent-data lvm2添加Docker仓库 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.rep…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的火焰与烟雾检测系统详解(深度学习模型+UI界面升级版+训练数据集)

摘要&#xff1a;本研究详细介绍了一种集成了最新YOLOv8算法的火焰与烟雾检测系统&#xff0c;并与YOLOv7、YOLOv6、YOLOv5等早期算法进行性能评估对比。该系统能够在包括图像、视频文件、实时视频流及批量文件中准确识别火焰与烟雾。文章深入探讨了YOLOv8算法的原理&#xff0…

二、TensorFlow结构分析(5)案例

案例&#xff1a; minimize(error) 代码&#xff1a; def linear_regression():# 自实现线性回归# 1&#xff09;准备数据X tf.random.normal(shape[100,1])y_true tf.matmul(X,[[0.8]]) 0.7# 2&#xff09;构造模型# 定义模型参数 用 变量weights tf.Variable(initial_v…

不想多花10万块,别买理想MEGA

文 | AUTO芯球 作者 | 雷歌 理想MEGA注定要凉凉&#xff01; 这个口号喊震天响的MPV&#xff0c;直呼要做“50 万以上销量第一&#xff0c;不分能源形式、不分车身形态。” 50万以上&#xff1f;这个限定词真够高&#xff0c;但上面也不是没有狠角色。 比如腾势D9&#xf…