牛客周赛 Round 58(上)

news2024/12/25 23:37:19

会赢吗?

题目描述

登录—专业IT笔试面试备考平台_牛客网

运行代码

#include <iostream>
using namespace std;

int main() {
    double w;
    int h;
    cin >> w >> h;
    if (h - w > 0) {
        cout << "YES" << endl;
    } else {
        cout << "NO" << endl;
    }
    return 0;
}

代码思路

1.变量定义:首先定义了两个变量,w是一个双精度浮点数类型,用来接收一个可能带有小数部分的数值;h是一个整数类型,用于接收一个整数值。

2.输入部分:使用 cin从标准输入流中获取两个数值,并分别存储到变量 w和 h中。

3.判断部分:判断条件 h - w > 0,即判断输入的整数 h减去浮点数 w的结果是否大于零。如果 h比 w大,说明条件成立。

  • 如果条件成立,即 h - w > 0,则输出 "YES",表示满足该条件。
  • 如果条件不成立,即 h - w <= 0,则输出 "NO",表示不满足该条件。

4.返回部分:最后,函数 main返回 0,表示程序正常结束。

随机化游戏时间?

题目描述

登录—专业IT笔试面试备考平台_牛客网

运行代码

#include <iostream>
#include <vector>

using namespace std;
#define int long long
#define P 1000000007

int n, m;
vector<int> a, b, l, r, k;

// 检查函数,用于判断给定值是否满足条件
int check(int x) {
    // 重新计算 b 数组
    for (int i = 0; i < n; i++) {
        b[i + 1] = (a[i] <= x? b[i] + 1 : b[i]);
    }
    for (int i = 0; i < m; i++) {
        int cnt = b[r[i]] - b[l[i] - 1];
        if (cnt > k[i]) return 1;
        else if (cnt < k[i]) return -1;
    }
    return 0;
}

// 快速幂函数
int power(int a, int b) {
    int res = 1;
    while (b > 0) {
        if (b & 1) res = res * a % P;
        a = a * a % P;
        b >>= 1;
    }
    return res;
}

// 求逆元函数
int inverse(int x) {
    return power(x, P - 2);
}

void solve() {
    cin >> n >> m;
    a.resize(n);
    b.resize(n + 1, 0);
    l.resize(m);
    r.resize(m);
    k.resize(m);
    for (int i = 0; i < n; i++) cin >> a[i];
    for (int i = 0; i < m; i++) cin >> l[i] >> r[i] >> k[i];
    int left = 1, right = n;
    while (left <= right) {
        int mid = left + right >> 1;
        if (check(mid) == 1) right = mid - 1;
        else left = mid + 1;
    }
    int ansr = left - 1;
    left = 1, right = n;
    while (left <= right) {
        int mid = left + right >> 1;
        if (check(mid)!= -1) right = mid - 1;
        else left = mid + 1;
    }
    int ansl = left;
    if (ansr == ansl) cout << 1 << " " << ansr << "\n";
    else cout << inverse(ansr - ansl + 1) << "\n";
}

signed main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    int T;
    cin >> T;
    while (T--) solve();
    return 0;
}

代码思路

一、整体思路

  1. 首先定义了多个变量和函数,包括输入数据的大小 n 和 m,数组 ablrk,以及用于检查条件的函数 check、快速幂函数 power、求逆元函数 inverse 和解决问题的函数 solve
  2. 在 solve 函数中,读取输入数据 n 和 m,以及相应的数组 alrk
  3. 通过二分查找的方式确定满足特定条件的区间,最终计算出结果并输出。

二、各个部分的原理

  1. check 函数

    • 这个函数的目的是判断给定的一个值 x 是否满足特定条件。
    • 首先,根据输入数组 a 和给定值 x,重新计算 b 数组。如果 a[i] 小于等于 x,则 b[i] 等于 b[i - 1] + 1,否则 b[i] 等于 b[i - 1]。这样,b 数组实际上记录了 a 数组中小于等于 x 的元素的个数的累计值。
    • 然后,对于每个输入的区间 [l[i], r[i]],计算这个区间内小于等于 x 的元素个数 cnt,即 cnt = b[r[i]] - b[l[i] - 1]
    • 最后,将计算出的 cnt 与给定的 k[i] 进行比较。如果 cnt 大于 k[i],返回 1;如果 cnt 小于 k[i],返回 -1;如果相等,返回 0
  2. power 函数(快速幂)

    • 这个函数用于快速计算 a 的 b 次幂对 P 取模的结果。
    • 通过位运算的方式,当 b 的二进制表示中某一位为 1 时,将当前的结果累乘 a,同时不断将 a 自乘,将 b 右移一位,直到 b 变为 0
  3. inverse 函数(求逆元)

    • 利用费马小定理,当 P 是质数时,a 的逆元为 a^(P - 2)。所以调用 power 函数计算 x 的 P - 2 次幂对 P 取模的结果,即为 x 在模 P 意义下的逆元。
  4. solve 函数

    • 首先读取输入数据,初始化相关数组。
    • 然后使用二分查找的方法确定满足条件的区间。
    • 进行两次二分查找,第一次找到满足条件的右边界 ansr,当 check(mid) 为 1 时,说明当前值 mid 使得区间内小于等于它的元素个数大于 k[i],需要减小 mid,即 right = mid - 1;当 check(mid) 不为 1 时,说明当前值 mid 可能是满足条件的右边界或者还需要增大 mid,即 left = mid + 1
    • 第二次二分查找找到满足条件的左边界 ansl,当 check(mid) 不为 -1 时,说明当前值 mid 可能是满足条件的左边界或者还需要减小 mid,即 right = mid - 1;当 check(mid) 为 -1 时,说明当前值 mid 使得区间内小于等于它的元素个数小于 k[i],需要增大 mid,即 left = mid + 1
    • 最后,根据 ansr 和 ansl 的关系输出结果。如果 ansr == ansl,输出 1 和 ansr;否则,输出 ansr - ansl + 1 在模 P 意义下的逆元。

总的来说,这段代码通过二分查找和特定的条件判断,确定满足条件的区间,并利用快速幂和求逆元的方法计算最终结果。

会赢的!

题目描述

登录—专业IT笔试面试备考平台_牛客网

运行代码

#include <iostream>
#include <cmath>
using namespace std;

int main() {
    int T;
    int x, y;
    cin >> T;
    while (T--) {
        cin >> x >> y;
        if ((x < 0 || y < 0) || abs(x - y) >= 2) 
            cout << "PING" << endl;
        else if ((x + y) % 2 == 0) cout << "NO" << endl;
        else cout << "YES" << endl;
    }
    return 0;
}

代码思路

一、整体思路

  1. 首先从输入中读取测试数据的组数 T
  2. 对于每组测试数据,读取终点坐标 x 和 y
  3. 根据特定的条件判断游戏的结果是阿龙获胜(输出 "YES")、小歪获胜(输出 "NO")还是平局(输出 "PING")。

二、各个部分的原理

  1. 条件判断一:

    • 如果 x < 0 或者 y < 0,说明终点在起点的左方或者上方,这种情况下双方都无法到达终点,所以是平局。
    • 如果 abs(x - y) >= 2,意味着两个坐标的差值较大,双方无法在交替的回合中到达终点,也是平局。
  2. 条件判断二:

    • 考虑到达终点 (x, y)所需的步数,向右走 x 步,向下走 y 步,总共需要 x + y 步。
    • 因为阿龙先手,所以总步数为偶数时阿龙走了偶数步,小歪走了偶数步;总步数为奇数时阿龙走了奇数步,小歪走了奇数步。
    • 如果 (x + y) 是偶数,那么小歪在最后一步,所以阿龙不能获胜,判断小歪获胜(输出 "NO");如果 (x + y) 是奇数,那么阿龙在最后一步,所以判断阿龙获胜(输出 "YES")。

总的来说,这段代码通过对输入的终点坐标进行分析,根据不同的情况判断游戏的结果,利用数学推理和条件判断来确定谁能在游戏中获胜或者是否为平局。

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

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

相关文章

Java中SringBoot服务连接多个MySQL数据源案例实战

Java中SringBoot服务连接多个MySQL数据源案例实战 1.场景2.取消默认的单数据源配置3.自定义多数据源配置文件4.自定义多数据源配置类1.DB1Config.java2.DB2Config.java 5.启动项目&#xff0c;测试操作多数据源 1.场景 A服务&#xff08;供应商&#xff09;有一套自己的数据库…

每周心赏|教师节“AI大礼包”:3款教学神器让你AI不释手

教师节“AI大礼包”真的来了&#xff01; 家人们谁懂啊&#xff0c;当学生时不想上课&#xff0c;当老师后不想上班…… 3款超会整活的教师必备AI神器&#xff0c;终于让我给挖到了&#xff1a;一键拥有金牌名师教学经验&#xff0c;助力撰写教案、高效赋能学生、总结工作成果…

10BASE-T1S 接口转换器

10BASE-T1S 接口工具 车载网络的发展正在经历一场转型变革&#xff0c;点对点和总线拓扑的融合现在已成为现实。为应对这一变革&#xff0c;我们推出了新颖的 10BASE-T1S 接口转换器&#xff0c;这是一款创新的以太网桥接器&#xff0c;它弥合了这两种不断发展的技术之间的差距…

【Python机器学习】循环神经网络(RNN)——对RNN进行预测

目录 有状态性 双向RNN 编码向量 如果有一个经过训练的模型&#xff0c;接下来就可以对其进行预测&#xff1a; sample_1""" I hate that the dismal weather had me down for so long,when will it break! Ugh,when does happiness return? The sun is bl…

《深入浅出多模态》之多模态经典模型:InstructBLIP

🎉AI学习星球推荐: GoAI的学习社区 知识星球是一个致力于提供《机器学习 | 深度学习 | CV | NLP | 大模型 | 多模态 | AIGC 》各个最新AI方向综述、论文等成体系的学习资料,配有全面而有深度的专栏内容,包括不限于 前沿论文解读、资料共享、行业最新动态以、实践教程、求职…

FlinkCDC 3.2.0 新增优点 Pattern Replacement in routing rules

新增优点&#xff1a;Pattern Replacement in routing rules flinkcdc 3.2.0版本相较于3.1.0版本&#xff0c;避免了多表多sink多次写 route 路由的麻烦&#xff0c;类似于统一前后缀的形式多表多sink&#xff0c;通过<>正则&#xff0c;大大减少了书写 官网&#xff1…

年薪30W的项目经理,都在用这个方法做项目!

看到很多新手项目经理不知道在带项目的时候应该怎么做&#xff0c;这里给大家整理了一份超牛的资深项目经理在日常工作中的带项目方法&#xff0c;大家有需要的可以收藏哦~&#xff01; 捋清思路&#xff0c;制定章程 在接手到一个新的项目时&#xff0c;项目经理要做的并不是…

农业品牌宣传:让绿色故事传遍万家!

合作咨询联系竑图 hongtu201988 乡村要振兴&#xff0c;品牌必须响亮&#xff01;农产品企业在追求渠道拓展与销量增长的同时&#xff0c;绝不能忽视品牌形象构建的基石作用。若缺乏稳固的品牌支撑&#xff0c;即便是再广阔的渠道与惊人的销量&#xff0c;也可能如同沙上建塔&…

灵魂绑定Tokens介绍和在Sui上的案例

灵魂绑定token&#xff08;Soulbound token&#xff0c;SBT&#xff09;这一术语由以太坊联合创始人Vitalik Buterin提出&#xff0c;是一种设计为永久且不可转让的NFT。与典型的NFT可以自由交易不同&#xff0c;SBT始终绑定于原始账户&#xff0c;就像游戏中的技能或成就一样与…

探索Python的隐秘角落:Keylogger库的神秘面纱

文章目录 探索Python的隐秘角落&#xff1a;Keylogger库的神秘面纱背景&#xff1a;为何需要Keylogger&#xff1f;库简介&#xff1a;什么是Keylogger&#xff1f;安装指南&#xff1a;如何将Keylogger纳入你的项目&#xff1f;函数使用&#xff1a;5个简单函数的介绍与代码示…

vue3 使用 codemirror 实现yaml文件的在线编辑

vue3 使用 codemirror 实现yaml文件的在线编辑 1. 使用情形2. 插件下载3. 封装yaml编辑器组件4. 父组件使用5. js-yaml 使用6. 备注 1. 使用情形 需要对yaml文件进行在线编辑&#xff0c;并且进行基础格式验证 2. 插件下载 vue-codemirror 在线代码编辑器插件 js-yaml 用于转…

RickdiculouslyEasy-CTF-综合靶场

步骤一&#xff1a;利用Goby搜索靶机地址 步骤二&#xff1a;访问靶机地址 步骤二&#xff1a;扫描端口 nmap 172.16.1.7 -p 1-65535 步骤三&#xff1a; 扫描目录 dirsearch -u http://172.16.1.7/ 第一个flag&#xff1a;命令&#xff1a;nmap -A -v -T4 172.16.1.7 -p 1-6…

MUR2060CTR-ASEMI快恢复二极管对管MUR2060CTR

编辑&#xff1a;ll MUR2060CTR-ASEMI快恢复二极管对管MUR2060CTR 型号&#xff1a;MUR2060CTR 品牌&#xff1a;ASEMI 封装&#xff1a;TO-220AB 安装方式&#xff1a;插件 批号&#xff1a;最新 最大平均正向电流&#xff08;IF&#xff09;&#xff1a;20A 最大循环…

Origin2024中绘制多因子分组柱状图,直观展示不同组别内的数据变化!

当我们需要对比多组平行数据时&#xff0c;采用Origin多因子分组柱状图&#xff0c;不仅可以直接的对比多组数据&#xff0c;同时还能够直观展示各个指标因子的数据变化及趋势 操作步骤&#xff1a; 1、先打开Origin2024软件&#xff0c;然后在Book1中输入如下示例数据&#…

边缘检测运用

文章目录 一、简介1.边缘检测的概念2.边缘检测的目的 二、代码实现三、边缘检测的方法1.1Canny边缘检测器1.2.Canny代码实现2.1Sobel边缘检测器2.2Sobel代码实现3.1Laplacian边缘检测器3.2Laplacian代码实现4.1Scharr边缘检测器4.2Scharr代码实现 四、边缘检测的应用 一、简介 …

Qt与MQTT交互通信

MQTT全称是&#xff08;Message Queuing Telemetry Transport&#xff09;&#xff0c;即消息队列遥测传输协议 是一种基于发布/订阅&#xff08;Publish/Subscribe&#xff09;模式的轻量级通讯协议&#xff0c;并且该协议构建于TCP/IP协议之上&#xff0c;常用于互联网中&am…

vue3封装数字上下滚动翻牌器,

优点&#xff1a;可以传入字符串设置初始数字位数&#xff0c;也可以直接传入数字&#xff0c;让他自己根据位数渲染 组件代码&#xff1a; <template><div class"count-flop" :key"compKey"><!-- --><div:class"item ! . ?…

【EI会议征稿通知】第四届材料工程与应用力学国际学术会议(ICMEAAE 2025)

第四届材料工程与应用力学国际学术会议&#xff08;ICMEAAE 2025&#xff09; 2025 4th International Conference on Materials Engineering and Applied Mechanics 本次会议将重点讨论材料科学、应用力学等领域的最新研究进展与发展趋势。会议旨在为国内外从事这些领域研究…

怎么利用接口发送图文彩信

在数字化时代&#xff0c;信息的传递方式日新月异&#xff0c;从传统的书信、电话到如今的即时通讯软件、社交媒体&#xff0c;每一种新技术的应用都在不断重塑我们的沟通方式。而在这其中&#xff0c;彩信&#xff08;Multimedia Messaging Service, MMS&#xff09;作为一种融…

python安装tensorflow一直报错

python安装tensorflow一直报错&#xff0c;试了3.5、3.6、3.7、3.8、3.9、3.10&#xff0c;人麻&#xff0c;全部都不行 问题描述 pip install tensorflow报错ERROR: Could not find a version that satisfies the requirement tensorflow (f问题分析 直到在网上看到&#x…