美团3月9日笔试题

第一题:小美的平衡矩阵

注意in.nextLine()in.next()

import java.util.Scanner;public class Main {static final int maxn = 210;public static void main(String[] args) {Scanner in = new Scanner(System.in);int n = in.nextInt();char[][] a = new char[maxn][maxn];// int[][] b = new int[maxn][maxn];int[][] dp = new int[maxn][maxn];in.nextLine(); // 不加就报错!!!// 这是因为前面读取的是整数,后面是nextline取字符串,会先取后面的换行符。// for (int i = 0; i < n; ++i) {for (int i = 1; i <= n; ++i) {String line = in.nextLine();//String line = in.next(); // 如果这么写就不需要in.nextLine();了// 因为如果读取到的标记之间有空格或换行符,则 .next() 方法会将其忽略。返回的是标记(token)字符串。for (int j = 1; j <= n; ++j) {// a[i][j] = line.charAt(j);a[i][j] = line.charAt(j - 1);}}// for (int i = 0; i < n; ++i) {// for (int j = 0; j < n; ++j) {for (int i = 1; i <= n; ++i) {for (int j = 1; j <= n; ++j) {// b[i][j] = a[i][j] == '1' ? 1 : 0;int value = a[i][j] == '1' ? 1 : 0;dp[i][j] = dp[i][j - 1] + dp[i - 1][j] - dp[i - 1][j - 1] + value;}}for (int len = 1; len <= n; ++len) {if (len % 2 == 1) System.out.println(0);else {int sum = 0;for (int i = len; i <= n; ++i) {for (int j = len; j <= n; ++j) {int num = dp[i][j] - dp[i - len][j] - dp[i][j - len] + dp[i - len][j - len];// if (num == len)if (num * 2 == len * len) sum++;}}System.out.println(sum);}}}
}

第二题:小美的数组询问

注意注释的所有内容!!!都可能让代码超时!!!

  • 数组大小预设
  • 不用多余读取空行
  • System.out.println 通常会比 System.out.printf 更快,后者常用于同时输出不同类型的数据
import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {static final int maxn = 100010;public static void main(String[] args) {Scanner in = new Scanner(System.in);int n = in.nextInt();int q = in.nextInt();// in.nextLine();// int[] a = new int[n];int[] a = new int[maxn];long sum = 0, num_0 = 0;for (int i = 0; i < n; ++i) {a[i] = in.nextInt();sum += a[i];if (a[i] == 0) num_0++;}// in.nextLine();while (q-- > 0) {int l = in.nextInt();int r = in.nextInt();// System.out.printf("%d %d\n", sum + l * num_0, sum + r * num_0);System.out.println((sum + l * num_0) + " " + (sum + r * num_0));}}
}

第三题:小美的MT

注意ACM模式答案要打印输出,不要return

import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int k = scanner.nextInt();scanner.nextLine();String str = scanner.nextLine();int ans = 0, len = str.length();for (int i = 0; i < len; ++i) {if (str.charAt(i) == 'M' || str.charAt(i) == 'T') ans++;}// return ans + k > len ? len : ans + k;ans = Math.min(ans + k, len);System.out.println(ans);}
}

第四题:小美的朋友关系 3/30

并查集

// import java.util.Scanner;
import java.util.*;// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {static final int N = 100010;static List<String> res = new ArrayList<>();static int[] f = new int[N];public static void main(String[] args) {Scanner in = new Scanner(System.in);int n = in.nextInt();int m = in.nextInt();int q = in.nextInt();// boolean[][] relations = new boolean[n][n];for (int i = 0; i < N; ++i) {f[i] = i;}Set<int[]> edge = new HashSet<>();while (m-- > 0) {int a = in.nextInt();int b = in.nextInt();edge.add(new int[] {a, b});}Set<int[]> del_edge = new HashSet<>();List<int[]> ops = new ArrayList<>();int temp = q;while (temp-- > 0) {int op = in.nextInt();int a = in.nextInt();int b = in.nextInt();if (op == 1) {del_edge.add(new int[] {a, b});del_edge.add(new int[] {b, a});}ops.add(new int[] {op, a, b});// test// for (int i = 0; i < n; ++i) {//     for (int j = 0; j < n; ++j) {//         System.out.print(relations[i][j] + " ");//     }//     System.out.println();// }}// 建立并查集for (int[] e : edge) {boolean flag = true;for (int[] de : del_edge) {if (e[0] == de[0] && e[1] == de[1]) {flag = false;break;}}if (flag) merge(e[0], e[1]);}for (int i = q - 1; i >= 0; --i) {int op = ops.get(i)[0], a = ops.get(i)[1], b = ops.get(i)[2];if (op == 1) {merge(a, b);} else {if (find(a) == find(b)) res.add("Yes");else res.add("No");}}for (int i = res.size() - 1; i >= 0; --i) {System.out.println(res.get(i));}}public static int find(int x) {if (x != f[x]) {f[x] = find(f[x]);}return f[x];}public static void merge(int x, int y) {int fx = find(f[x]), fy = find(f[y]);f[fx] = fy;}
}

第五题:小美的区间删除

import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {static final int maxn = 100010;static int[] a = new int[maxn], pre2 = new int[maxn], pre5 = new int[maxn];// pre[i]表示以i结尾之前所有字符含2或5的个数,不包括第i个static int n, k;static int total2 = 0, total5 = 0;public static void main(String[] args) {Scanner in = new Scanner(System.in);n = in.nextInt();k = in.nextInt();// System.out.println(n+" "+k);for (int i = 0; i < n; ++i) {a[i] = in.nextInt();int cnt2 = cal(a[i], 2), cnt5 = cal(a[i], 5);total2 += cnt2;total5 += cnt5;pre2[i + 1] = pre2[i] + cnt2;pre5[i + 1] = pre5[i] + cnt5;// System.out.println(cnt2+" "+cnt5);// System.out.println(pre2[i + 1]+" "+pre2[i]);}int res = 0;for (int i = 0, j = 0; i < n; ++i) {while (j < n) {// int cnt2 = pre2[j + 1] - pre2[i + 1];// int cnt5 = pre5[j + 1] - pre5[i + 1];int cnt2 = pre2[j + 1] - pre2[i];int cnt5 = pre5[j + 1] - pre5[i];int remain2 = total2 - cnt2, remain5 = total5 - cnt5;if (remain2 >= k && remain5 >= k) j++;else break;}// res += Math.max(j - i + 1, 0);res += Math.max(j - i, 0);}System.out.println(res);}public static int cal(int x, int mod) {int cnt = 0;while (x != 0) {if (x % mod == 0) cnt++;else break;x /= mod;}return cnt;}
}

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

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

相关文章

Docker 安装部署 ORACLE 11g数据库

Docker 安装部署 ORACLE 11g数据库 背景&#xff1a; ​ 最新在开发数据中台数据接入模块&#xff0c;其中设计很多数据类型&#xff0c;包括ORACLE &#xff0c;因为是测试使用&#xff0c;想着快速部署测试&#xff0c;于是使用Docker 部署 Oracle , 生产环境不建议使用Doc…

YOLOv7-Openvino和ONNXRuntime推理【CPU】

纯检测系列&#xff1a; YOLOv5-Openvino和ONNXRuntime推理【CPU】 YOLOv6-Openvino和ONNXRuntime推理【CPU】 YOLOv8-Openvino和ONNXRuntime推理【CPU】 YOLOv7-Openvino和ONNXRuntime推理【CPU】 YOLOv9-Openvino和ONNXRuntime推理【CPU】 跟踪系列&#xff1a; YOLOv5/6/7-O…

onecloud刷CasaOS系统后如何安装内网穿透实现公网访问本地文件

文章目录 1. CasaOS系统介绍2. 内网穿透安装3. 创建远程连接公网地址4. 创建固定公网地址远程访问 2月底&#xff0c;玩客云APP正式停止运营&#xff0c;不再提供上传、云添加功能。3月初&#xff0c;有用户进行了测试&#xff0c;局域网内的各种服务还能继续使用&#xff0c;但…

十二、项目采购管理

十二、项目采购管理 1、规划采购管理 ​ 规划采购管理是记录项目采购决策、明确采购方法&#xff0c;及识别潜在卖方的过程。 1,1、关键输入 组织过程资产 组织使用的各种合同协议类型也会影响规划采购管理过程中的决策。能够影响规划采购管理过程的组织过程资产包括&#xf…

力扣爆刷第96天之hot100五连刷66-70

力扣爆刷第96天之hot100五连刷66-70 文章目录 力扣爆刷第96天之hot100五连刷66-70一、33. 搜索旋转排序数组二、153. 寻找旋转排序数组中的最小值三、4. 寻找两个正序数组的中位数四、20. 有效的括号五、155. 最小栈 一、33. 搜索旋转排序数组 题目链接&#xff1a;https://le…

【研发日记】Matlab/Simulink技能解锁(五)——Simulink布线技巧

前言 见《【研发日记】Matlab/Simulink技能解锁(一)——在Simulink编辑窗口Debug》 见《【研发日记】Matlab/Simulink技能解锁(二)——在Function编辑窗口Debug》 见《【研发日记】Matlab/Simulink技能解锁(三)——在Stateflow编辑窗口Debug》 见《【研发日记】Matlab/Simulink…

虚拟环境的激活

(此博客仅用于我记录虚拟环境的激活方法) 虚拟环境的激活命令: venv/Scripts/activate 在F:\git repo\Database-Course-Design 这个文件夹中启动命令行 这个文件夹中含有虚拟环境venv 输入命令venv/Scripts/activate&#xff0c;就得到下面的结果: 此时就激活了虚拟环境&…

python 基础知识点(蓝桥杯python科目个人复习计划64)

今日复习内容&#xff1a;做题 例题1&#xff1a;蓝桥课程抢购 问题描述&#xff1a; 为了能让更多的同学学到IT技术&#xff0c;蓝桥云课又开始了课程限时打折活动。 作为初学者的你&#xff0c;希望尽可能买到含金量总额更高的课程&#xff0c;当然其他同学也是这么想。 …

wsl-oracle 安装 omlutils

wsl-oracle 安装 omlutils 1. 安装 cmake 和 gcc-c2. 安装 omlutils3. 使用 omlutils 创建 onnx 模型 1. 安装 cmake 和 gcc-c sudo dnf install -y cmake gcc-c2. 安装 omlutils pip install omlutils-0.10.0-cp312-cp312-linux_x86_64.whl不需要安装 requirements.txt&…

人工智能入门之旅:从基础知识到实战应用(三)

一、机器学习入门 1.机器学习基本概念 •监督学习、非监督学习、半监督学习和强化学习是机器学习中的主要学习类型&#xff0c;它们在解决不同类型的问题时具有不同的方法和应用场景&#xff1a; 监督学习&#xff08;Supervised Learning&#xff09;&#xff1a; 监督学习是…

单个数据盘分区如何配置LVM

要在单个 磁盘上划分多个数据盘主分区并配置 LVM&#xff08;Logical Volume Manager&#xff09;&#xff0c;你可以按照以下步骤进行操作&#xff1a; 1. 划分分区&#xff1a;使用 fdisk 或parted等其他磁盘分区工具&#xff0c;在单个磁盘上创建多个主分区。例如&#xff0…

备战蓝桥杯Day28 - 贪心算法

一、贪心算法 贪心算法&#xff08;Greedy Algorithm&#xff09;是一种在每一步选择中都采取在当前状态下最好或最优&#xff08;即最有利&#xff09;的选择&#xff0c;从而希望导致结果是全局最好或最优的算法。贪心算法在有最优子结构的问题中尤为有效。最优子结构指的是…

【Python】查看指定目录(包括子目录)下指定年份的数量和占用量,附带windows可执行程序。

目录 安装依赖 代码 打包为可执行程序 如果你使用了Anaconda&#xff0c;请先切换环境&#xff01;&#xff01;&#xff01; 安装依赖 pip install tqdm aiofiles 代码 新建一个find.py文件&#xff0c;将以下代码粘贴进去&#xff1a; import os import datetime f…

Linux下进行JavaEE开发-安装JDK、Tomcat、MySQL

目录 JDKTomcatMySQL JDK 安装JDK步骤&#xff1a; 1、创建目录mkdir /opt/jdk 2、将jdk压缩包通过xftp6上传到该目录 3、cd /opt/jdk 4、tar -zxvf jdk-8u151-linux-x64.tar.gz 5、mkdir /usr/local/java 6、mv /opt/jdk/jdk1.8.0_151 /usr/local/java 7、修改环境变量…

Leetcode刷题笔记——数组与字符串篇

Leetcode刷题笔记——数组与字符串篇 一、数组 第一题 Leetcode14&#xff1a;最长公共前缀&#xff1a;简单题 &#xff08;详情点击链接见原题&#xff09; 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀&#xff0c;返回空字符串 "" 当前…

深入学习和理解Java NIO的高级特性

学习使用Path、Paths和Files类来操作文件系统 在Java 7引入的NIO.2&#xff08;New Input/Output 2&#xff09;中&#xff0c;Path、Paths和Files类是处理文件系统操作的核心类。它们提供了一套强大的文件I/O操作接口&#xff0c;使得读写文件、访问文件属性、遍历文件目录等…

解锁基于LLMS的咒语:通过上下文学习重新思考对齐

一、写作动机&#xff1a; 最近的一项研究&#xff0c;LIMA&#xff0c;表明仅使用1K个示例进行SFT也可以实现显著的对齐性能&#xff0c;这表明对齐微调的效果可能是“表面的”。&#xff08;知识和推理能力来源于预训练&#xff0c;而不是必须通过对齐微调获得的。&#xff…

计算机图形学学习(一)——线的绘制、三角形填充绘制

以下摘抄自本人的计算机图形学上机报告 实验内容及要求&#xff1a; 理解并掌握中点画线法、Bresenham算法、扫描线法和重心坐标法的基本原理和算法步骤。使用编程语言C实现上述算法&#xff0c;并编写相应的代码。对于直线绘制算法&#xff0c;要求能够绘制水平、垂直、斜向等…

Python助力:高效合并多个Word文档

目录 写在开头1 准备工作1.1 安装Python环境1.2 安装必要的库 2 理解Word文档的结构2.1 python-docx库的基本使用2.2 文档基本组成2.2.1 段落2.2.2 表格2.2.3 图片2.2.4 页眉和页脚 3 编写合并Word文档的脚本3.1 创建新的Word文档3.2 读取并合并文档内容3.2.1 合并段落3.2.2 合…

【消息队列开发】 实现内存加载

文章目录 &#x1f343;前言&#x1f333;实现思路&#x1f6a9;读取消息长度&#x1f6a9;读取相应长度的消息&#x1f6a9;进行反序列化&#x1f6a9;判定是否有效&#x1f6a9;加入有效消息&#x1f6a9;收尾工作&#x1f6a9;代码实现 ⭕总结 &#x1f343;前言 本次开发目…