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

为了更好的阅读体检,为了更好的阅读体检,,可以查看我的算法学习博客第一题-申请奖学金

在线评测链接:P1245

题目内容

塔子哥是一个热爱学习的大学生,他的梦想是成为一名优秀的算法竞赛高手。为了实现自己的梦想,他需要获得奖学金,以便有足够的时间和资金去参加各种比赛和训练。但是,塔子哥所在的学校对于奖学金的评定非常严格,要求塔子哥必须保持优异的成绩。

塔子哥总共修习了 n 门课程,每门课程都有一个学分 a_i,表示这门课程的重要程度。而这门课塔子哥的成绩是b_i,表示塔子哥在这门课程上的表现。塔子哥所在学校对于奖学金的评定非常简单:只要所有课程的均分不低于一个给定的标准 X ,而且没有任何课程挂科,就可以申请奖学金。均分是指所有课程的成绩按照学分加权的平均值,而一门课程挂科即该课成绩低于 60 分。

现在塔子哥想要知道,在每种课业情况下他能否申请奖学金。他会给你总共若干次询问,每次询问他会告诉你他修习了哪些课程,每门课程的学分和成绩,以及奖学金的评定标准 X 。你需要帮助塔子哥判断,在每次询问中,他是否满足申请奖学金的条件。

输入描述

第一行有一个正整数 T(1 \leq T \leq 100) ,表示询问次数;

对于每组询问中:

第一行有两个正整数 n(1\leq n \leq 10^2), X(1 \leq X \leq 100) 表示有几门课和评定标准;

第二行中有 n 个正整数 a_i 表示每一科的学分; (1 \leq a_i \leq 100)

第三四行有 n 个正整数 b_i 表示每一科的成绩。 (1 \leq b_i \leq 100)

输出描述

输出为对于每次询问,输出 Yes 或者 No 表示能或不能申请奖学金。

样例

输入

3
5 97
5 4 8 2 4
72 92 64 96 100
5 87
1 7 7 3 8
64 69 98 72 91
5 61
10 7 8 2 3
100 83 72 91 63

输出

No
No
Yes

思路

模拟

模拟题,累加学分加权总和并判断是否达到要求即可。

时间复杂度:O(n)

类似题目推荐

本题比较简单。

LeetCode

周赛/双周赛 第一题

Codefun2000

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

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

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

  4. P1245 美团 2023.04.23-春招-第一题-申请奖学金

代码

CPP

#include <bits/stdc++.h>
using namespace std;
​
const int N = 110;
int a[N];
​
void solve() {
    int n, x, sum = 0, sums = 0;
    bool ok = true;
​
    cin >> n >> x;
​
    // 计算学分总和
    for (int i = 0; i < n; ++i) {
        cin >> a[i];
        sums += a[i];
    }
​
    // 计算学分×分数总和
    for (int i = 0; i < n; ++i) {
        int y; cin >> y;
        if (y < 60) ok = false;
        sum += y * a[i];
    }
​
    // 有小于 60 分的课程
    if (!ok) cout << "No\n";
    else {
        // 课程加权平均分小于 x
        if (sum < sums * x) cout << "No\n";
        else cout << "Yes\n";
    }
}
​
int main()
{
    int T = 1;
    cin >> T;
    while (T--) {
        solve();
    }
​
    return 0;
}

python

T = int(input())
while T > 0:
    n, x = map(int, input().split())
    a = list(map(int, input().split()))
    b = list(map(int, input().split()))
​
    # 遍历找是否存在一门课程的分数小于 60 分
    ok = True
    for i in range(n):
        if b[i] < 60:
            ok = False
            break
​
    # 课程存在一门课程小于 60分
    if not ok:
        print("No")
    else:
        # 课程加权平均分小于 x
        if sum(a[i] * b[i] for i in range(n)) < sum(a) * x:
            print("No")
        else:
            print("Yes")
​
    T -= 1
​

Java

import java.util.*;
​
public class Main {
​
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
​
        int T = sc.nextInt();
        while (T-- > 0) {
            int n = sc.nextInt(), x = sc.nextInt();
            int[] a = new int[n];
            int[] b = new int[n];
​
            for (int i = 0; i < n; ++i) a[i] = sc.nextInt();
            for (int i = 0; i < n; ++i) b[i] = sc.nextInt();
​
            boolean ok = true;
            // 遍历找是否存在一门课程的分数小于 60 分
            for (int i = 0; i < n; ++i) {
                if (b[i] < 60) {
                    ok = false;
                    break;
                }
            }
​
            if (!ok) {
                // 课程存在一门课程小于 60分
                System.out.println("No");
            } else {
                int sum = 0;
                int sumc = 0;
                // 计算a[i] * b[i] 总和以及学分总和
                for (int i = 0; i < n; ++i) {
                    sum += a[i] * b[i];
                    sumc += a[i];
                }
                if (sum < sumc * x) {
                    // 课程加权平均分小于 x
                    System.out.println("No");
                } else {
                    System.out.println("Yes");
                }
            }
        }
    }
}

Go

package main
​
import "fmt"
​
const N = 110
​
func main() {
    var T int
    fmt.Scan(&T)
​
    for T > 0 {
        T -= 1
​
        var n, x int
        a := make([]int, N)
        fmt.Scan(&n, &x)
​
        sums := 0
        for i := 0; i < n; i++ {
            fmt.Scan(&a[i])
            sums += a[i]
        }
​
        ok := true
        sum := 0
        for i := 0; i < n; i++ {
            var y int
            fmt.Scan(&y)
            // 计算a[i] * b[i] 总和以及学分总和
            sum += a[i] * y
            // 遍历找是否存在一门课程的分数小于 60 分
            if y < 60 {
                ok = false
            }
        }
​
        if !ok {
            // 课程存在一门课程小于 60分
            fmt.Println("No")
        } else {
            // 课程加权平均分小于 x
            if sum < sums*x {
                fmt.Println("No")
            } else {
                fmt.Println("Yes")
            }
        }
    }
}
​

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');
    let T = parseInt(lines[0]);
​
    for (let i = 1, t = 1; i <= T; i++) {
        const [n, x] = lines[t++].trim().split(' ').map(Number);
        const a = lines[t++].trim().split(' ').map(Number);
        const b = lines[t++].trim().split(' ').map(Number);
​
        // 遍历找是否存在一门课程的分数小于 60 分
        let ok = true;
        for (let j = 0; j < n; j++) {
            if (b[j] < 60) {
                ok = false;
                break;
            }
        }
​
        // 课程存在一门课程小于 60 分
        if (!ok) {
            console.log("No");
        } else {
            // 课程加权平均分小于 x
            if (a.reduce((acc, cur, i) => acc + cur * b[i], 0) < sum(a) * x) {
                console.log("No");
            } else {
                console.log("Yes");
            }
        }
    }
});
​
function sum(arr) {
    return arr.reduce((acc, cur) => acc + cur, 0);
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vue中v-text、v-html、v-on的基本语法(二)

文章目录 前言一、vue中data属性定义对象、数组相关数据二、v-text、v-html指令使用三、v-on基本指令使用(一)四、v-on指令基本使用(二)之在函数中获取vue实例本身this五、v-on指令基本使用(二)之在函数中传递参数六、v-on指令基本使用(二)之简化写法绑定函数和事件定义的两种写…

关于VPN的一些总结和理解

关于VPN的一些总结和理解 前言一、VPN的概述二、VPN的原理2.1 原理概述2.2 虚拟网卡2.3 点对点隧道的建立 三、其他3.1 vpn和vlan的区别&#xff1f;3.2 vpn和web代理的关系&#xff1f; 参考 前言 同样的机缘巧合&#xff0c;最近看了一些关于vpn的内容&#xff0c;总结一下&a…

go+vue自建运维管理平台

文章目录 鲁班运维平台容器管理集群管理namespace管理节点管理工作负载存储管理网络管理配置管理事件中心 kuboard 鲁班运维平台 这个平台和spug很像&#xff0c;感觉就像是spug运维平台的容器版本。 但是如果是容器平台则选择的余地很大&#xff0c;优秀的如kubersphere、kub…

LeetCod刷题笔记

目录 2739.总行驶距离 思路&#xff1a;模拟 代码 6890.找出分区值 思路&#xff1a;急转弯 代码: 1254.统计封闭岛屿的数目​编辑 思路&#xff1a;DFS 代码&#xff1a; 6447.给墙壁刷油漆 思路&#xff1a;动态规划 代码&#xff1a; 思路&#xff1a;状态DP 代码&…

Rust in Action笔记 第四章生命周期、所有权、借用

第四章用了一个行星通信的例子来阐述整个主题&#xff0c;主要角色有地面站&#xff08;Ground station&#xff09;、人造卫星&#xff08;CubeSat&#xff09;&#xff0c;两者有不同的状态并且能互相发消息通信&#xff1b; Rust有类型安全&#xff08;type safety&#xf…

WinDbg安装入坑1(C#)

由于作者水平有限&#xff0c;如有写得不对的地方&#xff0c;请指正。 使用WinDbg的过程中&#xff0c;坑特别的多&#xff0c;对版本要求比较严格&#xff0c;如&#xff1a; 1 32位应用程序导出的Dump文件要用32位的WinDbg打开&#xff0c;想要没有那么多的问题&#xff…

传统机器学习算法解析(opencv实现)

前言 文本主要解析在传统机器学习当中一些小的算法与思想&#xff0c;只是传统机器学习算法当中的一小部分&#xff0c;更多传统机器学习算法可参考我的另外几篇博客 链接1: PCA主成分分析 链接2: Canny边缘检测算法 链接3: K-Means聚类算法 链接4: SIFT算法分析 1. opencv …

农村饮水安全政策要求与解决措施

农村饮水安全&#xff0c;是指农村居民能够及时、方便地获得足量、洁净、负担得起的生活饮用水。农村饮水安全包括水质、水量、用水方便程度和供水保证率4项评价指标。 一、农村饮水安全问题 农村饮水安全问题一直是农村发展的重要问题。在过去&#xff0c;由于农村供水设施落…

Linux之多线程(下)——线程控制

文章目录 前言一、POSIX线程库1.概念2.pthread线程库是应用层的原生线程库3.错误的检查 二、线程控制1.创建线程——pthread_createpthread_create函数例子创建一个新线程主线程创建一批新线程 2.获取线程ID——pthread_self3.线程等待——pthread_join4.线程终止——return、p…

Flutter的状态管理之Provider

Provider简介 Flutter Provider是Flutter中一个非常流行的状态管理库&#xff0c;它可以帮助开发者更加方便地管理应用程序中的状态。Provider提供了一种简单的方式来共享和管理应用程序中的数据&#xff0c;并且可以根据数据的变化来自动更新UI界面。 Provider的核心思想是将…

C# 自动更新(基于FTP)

效果 启动软件后&#xff0c;会自动读取所有的 FTP 服务器文件&#xff0c;然后读取本地需要更新的目录&#xff0c;进行匹配&#xff0c;将 FTP 服务器的文件同步到本地 Winform 界面 一、前言 在去年&#xff0c;我写了一个 C# 版本的自动更新&#xff0c;这个是根据配置文…

qt学习——基本使用、对象树、按钮、信号与槽

初识qt **qt****qt命名规范以及相关快捷键的使用****QPushButton****对象树****点击按钮关闭窗口****信号和槽****标准的信号和槽****自定义信号和槽****带参数的自定义信号和槽传参以及函数的二义性问题****信号和槽的拓展****qt4的信号与槽****QDebug的输出转义问题****lambd…

STM32 Proteus仿真自动刹车系统超声波测距电机控制-0042

STM32 Proteus仿真自动刹车系统超声波测距电机控制-0042 Proteus仿真小实验&#xff1a; STM32 Proteus仿真自动刹车系统超声波测距电机控制-0042 功能&#xff1a; 硬件组成&#xff1a;STM32F103C6单片机 LCD1602显示器HCSR04超声波传感器按键(加 减)电机蜂鸣器 1.单片机…

Qt编写视频监控系统76-Onvif跨网段组播搜索和单播搜索的实现

一、前言 在视频监控行业一般会用国际onvif工具来测试设备是否支持onvif协议&#xff0c;工具的名字叫ONVIF Device Manager&#xff08;还有个工具叫ONVIF Device Test Tool&#xff0c;专用于程序员测试各种数据交互&#xff09;&#xff0c;可以自行搜索下载&#xff0c;此…

04-编织灵魂旋律:Golang 函数的魔力绽放

&#x1f4c3;个人主页&#xff1a;个人主页 &#x1f525;系列专栏&#xff1a;Golang基础 &#x1f4ac;Go&#xff08;又称Golang&#xff09;是由Google开发的开源编程语言。它结合了静态类型的安全性和动态语言的灵活性&#xff0c;拥有高效的并发编程能力和简洁的语法。G…

通过共享内存进行通信(嵌入式学习)

通过共享内存进行通信 概念特点函数示例代码 概念 在Linux中&#xff0c;共享内存是一种进程间通信&#xff08;IPC&#xff09;机制&#xff0c;允许多个进程共享同一块内存区域。这种通信方式可以提供高效的数据传输&#xff0c;特别适用于需要频繁交换数据的场景。 IO间进…

为CentOs配置静态IP

目录 第一步&#xff1a;查看物理机IP 第二步&#xff1a;虚拟机网络设置 点击虚拟机->编辑虚拟机设置 第三步&#xff1a;CentOS网络配置文件 第四步&#xff1a;重启网络 第五步&#xff1a;测试网络 为什么要设置静态IP 在安装好CentOS虚拟机以后&#xff0c;一般我…

程序替换原理

文章目录 一、程序替换 一、程序替换 程序替换用于将当前进程的用户空间的代码和数据全部替换为新程序的代码和数据&#xff0c;程序替换不会创建新进程&#xff0c;而是用当前进程执行新程序的代码&#xff0c;fork 创建子进程后&#xff0c;子进程默认执行的是父进程的代码&…

vue2和vue3的渲染过程简述版

文章目录 vue2渲染过程vue3渲染过程优化和扩充 vue2和vue3对比 vue2渲染过程 在Vue 2的渲染过程中&#xff0c;包括以下几个关键步骤&#xff1a; 解析模板&#xff1a;Vue 2使用基于HTML语法的模板&#xff0c;首先会将模板解析成抽象语法树&#xff08;AST&#xff09;&…

K8s 部署 Apache Kudu 集群

一、K8s 部署 Apache Kudu 集群 安装规划 组件replicaskudu-master3kudu-tserver3 1. 创建命名空间 vi kudu-ns.yamlapiVersion: v1 kind: Namespace metadata:name: apache-kudulabels:name: apache-kudukubectl apply -f kudu-ns.yaml查看命名空间&#xff1a; kubectl …