【备战秋招】每日一题:4月29日美团春招:题面+题目思路 + C++/python/js/Go/java带注释

news2024/10/6 22:25:49

2023大厂笔试模拟练习网站(含题解)
www.codefun2000.com
最近我们一直在将收集到的各种大厂笔试的解题思路还原成题目并制作数据,挂载到我们的OJ上,供大家学习交流,体会笔试难度。现已录入200+道互联网大厂模拟练习题,还在极速更新中。欢迎关注公众号“塔子哥学算法”获取最新消息。

提交链接: 

https://codefun2000.com/p/P1138

为了更好的阅读体检,可以查看OJ上的题解。进入提交链接,点击右边菜单栏的"查看塔子哥的题解"

在线评测链接:P1266

题目内容

某大学一共有 n 门课程,编号为 1 ~ n , m 个学院,编号为1 ~ m 。最近开学季,很多学院都开放了选课窗口,但是很多课程在选课窗口也不一定能选择上,因为课程没有给某些学生开放选择权限,但是学生可以去找教务处帮忙选择该课程。

也就是说,如果塔子哥是计算机学院的一名学生,如果他可以选择计算机学院的一个课程,但是该课程没有开放权限让他选,他可以去找计算机学院的教务处帮忙选课,如果开放了权限,他就可以自己选课。但是如果塔子哥可以选择电气工程学院的一个课程,如果该课程没有开放权限,他就算是去找电气工程学院的教务处,这个教务处也无法帮塔子哥选课,因为塔子哥不是电气工程学院的学生,但如果该课程开放了权限,那么塔子哥就可以自己选课了。

因为这些过程自己一门门课程去想,很麻烦,所以学校想请你帮学生们制作一个能快速判断自己选课情况的程序,你能帮学校编写这个程序吗?

学校给出 n 门可选课程及其开课学院、允许在系统选课的年级和专业,进行 q 次查询,每次查询给出学生所属学院和待选课程,请你帮这些学生判断他们是否能选择该课程,如果能选,他应该怎样去选课。

若可以自行在选课,输出 Help yourself ,否则若可以由教务处成功代选,输出 Ask for help ,否则说明该学生无法选择该门课程,输出 Impossible

注意:

只有年级和学院都不被限制的学生可以自行选课。

输入描述

第一行输入为 3 个正整数n , m , q (1 \leq n , m \leq 10 , 1 \leq q \leq 1000)

第二行输入 n 个正整数s_i(1 \leq s_i \leq 10),表示编号为 i 的课程的开课学院为s_i

接下来 4 行输入一个 4×n 的 01矩阵 f , f_{ij}=0 表示没给 i 年级的学生开放选 j 课程的权限, f_{ij}=1 则表示开放了;

接下来 m 行输入一个m\times n01 矩阵 g , g_{ij}=0 表示没给 i 学院的学生开放自行选 j 课程的权限, g_{ij}=1 则表示开放了;

接下来 q 行,每行输入 3 个正整数 A,B,C ,表示学生所属学院、年级、待选课程。

输出描述

输出一共 q 行,每行一个字符串表示对应查询的结果。

样例

输入

5 5 10
5 10 5 3 6
0 1 0 1 0
0 1 0 1 1
1 0 1 1 1
1 1 0 1 0
1 1 1 1 1
1 1 1 1 0
1 1 0 0 0
0 0 1 0 1
0 1 1 1 1
4 3 1
2 2 4
2 3 5
4 3 4
1 3 3
5 4 1
5 2 4
1 4 4
5 1 3
5 3 1

输出

Impossible
Help yourself
Impossible
Impossible
Help yourself
Ask for help
Help yourself
Help yourself
Ask for help
Ask for help

思路

模拟

按题意模拟即可。

  • 自行选课:当前学生所在年级开放了选择当前课的权限,且当前学生所在学院开放了选择当前课的权限

  • 教务处代选:不满足自行选课条件,且当前学生所在学院和课程所在学院是统一学院

  • 无法选择:不满足上述两个条件

时间复杂度:O(nm)

类似题目推荐

LeetCode

周赛/双周赛 第一题

Codefun2000

  1. 美的 P1232. 2023.04.19-笔试-第一题-交换数值

  2. P1174 华为od 2023.04.08--第一题-箱子之形摆放

  3. P1166 美团 2023.04.08-第一题-换座位

代码

CPP

#include <bits/stdc++.h>
using namespace std;
​
const int N = 20;
int n, m, Q;
int s[N];
int f[5][N];
int g[N][N];
​
int main()
{
    scanf("%d%d%d", &n, &m, &Q);
    for (int i = 1; i <= n; ++i) scanf("%d", &s[i]);
    for (int i = 1; i <= 4; ++i)
        for (int j = 1; j <= n; ++j)
            scanf("%d", &f[i][j]);
​
    for (int i = 1; i <= m; ++i)
        for (int j = 1; j <= n; ++j)
            scanf("%d", &g[i][j]);
​
    while (Q--) {
        int A, B, c;
        scanf("%d%d%d", &A, &B, &c);
        if (f[B][c] == 1 && g[A][c] == 1) {
            puts("Help yourself");
        } else if (s[c] == A) {
            puts("Ask for help");
        } else {
            puts("Impossible");
        }
    }
​
    return 0;
}

python

n, m, Q = map(int, input().split())
​
f = []
g = []
​
s = list(map(int, input().split()))
for i in range(len(s)):
    s[i] -= 1
for i in range(1, 5):
    f.append(list(map(int, input().split())))
​
for i in range(1, m + 1):
    g.append(list(map(int, input().split())))
​
for _ in range(Q):
    A, B, c = map(int, input().split())
    A -= 1
    B -= 1
    c -= 1
    if f[B][c] == 1 and g[A][c] == 1:
        print("Help yourself")
    elif s[c] == A:
        print("Ask for help")
    else:
        print("Impossible")
​

Java

import java.util.Scanner;
​
public class Main {
    static final int N = 20;
    static int n, m, Q;
    static int[] s = new int[N];
    static int[][] f = new int[5][N];
    static int[][] g = new int[N][N];
​
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        n = sc.nextInt();
        m = sc.nextInt();
        Q = sc.nextInt();
        for (int i = 1; i <= n; ++i) s[i] = sc.nextInt();
        for (int i = 1; i <= 4; ++i)
            for (int j = 1; j <= n; ++j)
                f[i][j] = sc.nextInt();
​
        for (int i = 1; i <= m; ++i)
            for (int j = 1; j <= n; ++j)
                g[i][j] = sc.nextInt();
​
        while (Q-- > 0) {
            int A = sc.nextInt();
            int B = sc.nextInt();
            int c = sc.nextInt();
            if (f[B][c] == 1 && g[A][c] == 1) {
                System.out.println("Help yourself");
            } else if (s[c] == A) {
                System.out.println("Ask for help");
            } else {
                System.out.println("Impossible");
            }
        }
    }
}

Go

package main
​
import "fmt"
​
const N = 20
​
func main() {
    var n, m, Q int
    fmt.Scan(&n, &m, &Q)
​
    s := make([]int, n+1)
    for i := 1; i <= n; i++ {
        fmt.Scan(&s[i])
    }
​
    f := make([][]int, 5)
    for i := 1; i <= 4; i++ {
        f[i] = make([]int, n+1)
        for j := 1; j <= n; j++ {
            fmt.Scan(&f[i][j])
        }
    }
​
    g := make([][]int, m+1)
    for i := 1; i <= m; i++ {
        g[i] = make([]int, n+1)
        for j := 1; j <= n; j++ {
            fmt.Scan(&g[i][j])
        }
    }
​
    for ; Q > 0; Q-- {
        var A, B, c int
        fmt.Scan(&A, &B, &c)
        if f[B][c] == 1 && g[A][c] == 1 {
            fmt.Println("Help yourself")
        } else if s[c] == A {
            fmt.Println("Ask for help")
        } else {
            fmt.Println("Impossible")
        }
    }
}
​

Js

process.stdin.resume();
process.stdin.setEncoding('utf-8');
let input = '';
process.stdin.on('data', (data) => {
    input += data;
    return;
});
process.stdin.on('end', () => {
    const lines = input.trim().split('\n');
    const [n, m, Q] = lines.shift().trim().split(' ').map(Number);
​
    const s = new Array(n + 1);
    const row = lines.shift().trim().split(' ').map(Number);
    for (let i = 0; i < n; ++i) s[i + 1] = row[i];
    
​
    const f = new Array(5).fill(null).map(() => new Array(n + 1));
    for (let i = 1; i <= 4; ++i) {
        const row = lines.shift().trim().split(' ').map(Number);
        for (let j = 1; j <= n; ++j) {
            f[i][j] = row[j - 1];
        }
    }
​
    const g = new Array(m + 1).fill(null).map(() => new Array(n + 1));
    for (let i = 1; i <= m; ++i) {
        const row = lines.shift().trim().split(' ').map(Number);
        for (let j = 1; j <= n; ++j) {
            g[i][j] = row[j - 1];
        }
    }
​
    for (let i = 0; i < Q; ++i) {
        const [A, B, c] = lines.shift().trim().split(' ').map(Number);
        if (f[B][c] === 1 && g[A][c] === 1) {
            console.log("Help yourself");
        } else if (s[c] === A) {
            console.log("Ask for help");
        } else {
            console.log("Impossible");
        }
    }
});

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

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

相关文章

好用的Windows数据恢复软件--傲梅恢复之星

​数据恢复软件有什么用&#xff1f; 现在&#xff0c;人们拥有大量的文件需要保留和保护&#xff0c;包括照片、视频、文档、游戏等等。了解数据安全的用户会利用云存储服务和外部设备来存储和备份重要的数据。 但更多的用户并不重视数据备份。这样做是相当危险的&#xf…

网络安全进阶学习第一课——认证崩溃之弱口令与暴力破解

文章目录 一、什么是弱口令&#xff1f;二、暴力破解1、暴力破解攻击产生原因2、暴力破解分类3、具体案例 一、什么是弱口令&#xff1f; 弱口令没有严格和准确的定义&#xff0c;通常认为它是容易被别人猜测到或被工具破解的口令均为弱口令。 在允许社会工程学攻击的情况下&…

一文搞懂 AB Testing 的分层分流

一、定义 在网络分析中&#xff0c;A / B测试&#xff08;桶测试或分流测试&#xff09;是一个随机实验&#xff0c;通常有两个辩题&#xff0c;A和B。利用控制变量法保持有单一变量的前提下&#xff0c;将A、B数据进行对比&#xff0c;得出实验结论。 二、简述 通常网站会利…

CentOS7配置教程(十三)安装Python3

由于 yum install python3 默认安装的 Python 版本较低&#xff0c;&#xff08;也可能自带了python3的版本过低&#xff09;现如今有更高版本的 Python 需求&#xff0c;就想用编译安装的方法安装一个较高版本的 Python&#xff0c;顺道记录一下安装过程。 注意&#xff1a;不…

通过ETLCloud自动化数据处理:用友U8数据一键同步

用友U8 用友U8是一款成熟的企业管理软件&#xff0c;是一套适用于企业全面管理的ERP&#xff08;Enterprise Resource Planning&#xff09;软件。主要用于管理企业的财务、人力资源、供应链、生产制造等业务。它具有模块化设计和高度可定制化的特点&#xff0c;可以根据企业的…

X Toolkit影像工具

最近发现一款3d影像工具&#xff0c;在网页版的表现很流畅&#xff0c;没有使用独显的情况下也非常的流畅。 X Toolkit 是一个开源工具包和框架&#xff0c;用于构建在浏览器中运行的医学和科学 3D 可视化&#xff0c;它使用 WebGL 的强大功能&#xff0c;只需几行代码即可提供…

探讨开源法律共识|2023开放原子全球开源峰会开源法律与合规分论坛成功举办

6 月 11 日&#xff0c;以“开源知识产权的深度现实与广阔未来”为主题的 2023 开放原子全球开源峰会“开源法律与合规分论坛”在北京经济开发区国家信创园顺利召开。全球开源领域法律与合规专家共同从理论和实践维度&#xff0c;就开放创新模式下知识产权纠纷的最新案例、开源…

ZooKeeper【客户端的API操作、写数据流程】

前置工作 创建Maven工程 导入依赖 <dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version></dependency><dependency><groupId>org.apache.loggi…

Flink TableAPI Aggregation And DataType

序言 这里整理下聚合的优化选项 以及 数据类型 Stream Aggregation SQL 是数据分析中使用最广泛的语言。Flink Table API 和 SQL 使用户能够以更少的时间和精力定义高效的流分析应用程序。此外&#xff0c;Flink Table API 和 SQL 是高效优化过的&#xff0c;它集成了许多查询…

springcloud-Nacos-注册表结构

// Map(nameSpace:: Group,Service) Map<String,Map<String,Service>> service new ConcurrentHashMap<>(); //Service 中有个属性 clusterMap // Map(服务名称,集群) Map<groupNameserviceName,Cluster> clusterMap new HashMap<>(); //而Clus…

局部聚集系数

最近在打一个图数据库算法的比赛&#xff0c;分到了计算局部聚集系数这道题&#xff0c;要求速度快&#xff0c;空间复杂度可以不首要考虑。这对我是一个全新的知识&#xff0c;用此博客记录我的学习历程。 搜了一圈视频教程&#xff0c;b站没有这块的知识&#xff0c;只有yout…

系统码的编译码与汉明码

本专栏包含信息论与编码的核心知识&#xff0c;按知识点组织&#xff0c;可作为教学或学习的参考。markdown版本已归档至【Github仓库&#xff1a;https://github.com/timerring/information-theory 】或者公众号【AIShareLab】回复 信息论 获取。 文章目录 系统码的编译码线性…

Android使用WebView与Native交互的三种方式 ( 附源码 )

先附上assets目录中html的源代码文件内容&#xff0c;下面的demo都是使用这几个文件&#xff1a; javascript.html: <!DOCTYPE html> <html> <head><meta charset"utf-8"><title>Carson</title><script>function callAn…

深入理解多层感知机(MLP):原理与代码解析

文章目录 1. MLP的原理1.1 结构1.2 激活函数1.3 前向传播1.4 反向传播算法 2.MLP分类任务应用3.参考文献&#xff1a; 多层感知机&#xff08;MLP&#xff09;是一种经典的神经网络模型&#xff0c;由多个神经元层组成。它的结构和功能使其成为深度学习中的重要组成部分。MLP在…

【Java算法题】剑指offer_算法之01搜索算法

前言 刷题链接&#xff1a; https://www.nowcoder.com/exam/oj/ta?page2&tpId13&type265 1. 搜索算法 JZ53 数字在升序数组中出现的次数 思路&#xff1a;遍历数组&#xff0c;count记录k值出现次数&#xff0c;返回count public class Solution {public int GetN…

【word wps文字】目录页码中的格式在打印或打印预览时变为和正文页码格式一样,如何调整?

一、问题背景 之前在闲鱼上&#xff0c;有个人找我改word排版&#xff0c;有一个需求就是正文页码两边需要横杠。 但是目录中显示的页码&#xff0c;不需要横杠。 我当时是一个一个在目录中删除横杠的&#xff0c;借助了查找与替换功能。 更改后&#xff0c;目录页码如下所…

Java与SpringBoot对redis的使用方式

目录 1.Java连接redis 1.1 使用Jedis1.2 使用连接池连接redis1.3 java连接redis集群模式 2.SpringBoot整合redis 2.1 StringRedisTemplate2.2 RedisTemplate 1.Java连接redis redis支持哪些语言可以操作 &#xff08;去redis官网查询&#xff09; 1.1 使用Jedis (1)添加jedis…

HTML+CSS实训——Day14——项目其他页面的完善

仓库地址&#xff1a;HTML实训 前言 今天我们继续用老师提供的api&#xff0c;完善一些剩余的功能&#xff0c;因为我的git push好像传乱了&#xff0c;所以仓库大家看看最新的就好&#xff0c;最新的一天一定包括前一天所做的内容。 Collect.htmlcss 收藏界面 <!DOCT…

Dijkstra迪杰斯特拉算法求最短路径(C++实现)

名人说&#xff1a;一花独放不是春&#xff0c;百花齐放花满园。——《增广贤文》 作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 〇、Dijkstra迪杰斯特拉算法介绍1、Dijkstra算法是什么&#xff1f;2、Dijkstra算法…

低代码工具:jvs-list(列表引擎)2.1.7功能清单及新增功能介绍

在低代码开发平台中&#xff0c;列表页是一个用于显示数据列表的页面。它通常用于展示数据库中的多条记录&#xff0c;并提供搜索、排序和筛选等功能&#xff0c;以方便用户对数据进行查找和浏览。 jvs-list是jvs快速开发平台的列表页的配置引擎&#xff0c;它和普通的crud 具…