牛客周赛 Round 59(下)

逆序数

题目描述

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

运行代码

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{ll n,k;cin>>n>>k;ll sum=(n*(n-1))/2;cout<<sum-k<<endl;return 0;
}

代码思路

  1. 组合数的计算:在数学中,从 n 个不同元素中选取 m 个元素的组合数记为 C(n,m),计算公式为 C(n,m)=n!/(m!(n - m)!)。当 m = 2 时,即 C(n,2)=n*(n - 1)/2,这是因为 n! 中分子部分是 n*(n - 1)*(n - 2)!,而 2! = 2*1,约分后得到 n*(n - 1)/2

  2. 整体逻辑:首先根据输入的 n 计算出 n 个不同元素中选两个元素的组合数 sum。然后减去给定的 k 值,得到最终的结果并输出。这个结果可能代表在某种特定情境下,除去特定的 k 种情况后,剩余的组合数量。

构造mex

题目描述

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

运行代码

#include <iostream>
using namespace std;#define ll long longconst int mod = 998244353;void solve() {ll n, m, k;cin >> n >> m >> k;if (k == 0) {if (n < m) {cout << "NO\n";} else {cout << "YES\n";for (int i = 1; i < m; i++) {cout << "1 ";}cout << n - m + 1 << "\n";}} else if (k == 1) {if (n == 1 || m == 1) {cout << "NO\n";} else {cout << "YES\n";cout << n << " ";for (int i = 1; i < m; i++) {cout << "0 ";}cout << "\n";}} else {ll nd = (k) * (k - 1) / 2;if (nd > n || k > m) {cout << "NO\n";} else {ll lst = n - nd;if (k == m) {if (lst == 0) {cout << "YES\n";for (int i = 0; i < k; i++) {cout << i << " ";}cout << "\n";} else {cout << "NO\n";}} else if (lst == k) {if (m >= k + 2) {cout << "YES\n";cout << 1 << " " << lst - 1 << " ";for (int i = 0; i < k; i++) {cout << i << " ";}ll ss = m - k - 2;for (int i = 0; i < ss; i++) {cout << "0 ";}cout << "\n";} else {cout << "NO\n";}} else if (m >= k + 1) {cout << "YES\n";cout << lst << " ";for (int i = 0; i < k; i++) {cout << i << " ";}ll ss = m - k - 1;for (int i = 0; i < ss; i++) {cout << "0 ";}cout << "\n";} else {cout << "NO\n";}}}
}int main() {ios::sync_with_stdio(false);cin.tie(0);int tn;cin >> tn;while (tn--) {solve();}return 0;
}

代码思路

  1. 定义了一些常量和变量,包括 mod 用于取模运算,nmk 用于存储输入的数值,nd 用于计算特定的数值,lst 用于存储计算后的结果。
  2. solve 函数是核心函数,用于解决问题。
    • 当 k == 0 时,如果 n < m,则输出 "NO";否则,输出 "YES",并输出 m - 1 个 1 和一个 n - m + 1
    • 当 k == 1 时,如果 n == 1 或 m == 1,则输出 "NO";否则,输出 "YES",并输出一个 n 和 m - 1 个 0
    • 当 k > 1 时,计算 nd = (k) * (k - 1) / 2,如果 nd > n 或 k > m,则输出 "NO";否则,计算 lst = n - nd
      • 如果 k == m 且 lst == 0,则输出 "YES" 并输出 0 到 k - 1 的序列。
      • 如果 lst == k 且 m >= k + 2,则输出 "YES" 并按照特定格式输出序列。
      • 如果 m >= k + 1,则输出 "YES" 并按照另一种特定格式输出序列。
      • 否则,输出 "NO"
  3. 在 main 函数中,通过 ios::sync_with_stdio(false) 和 cin.tie(0) 进行输入输出流的优化。然后读取测试用例的数量 tn,并在循环中调用 solve 函数进行处理。

小红的X型矩阵

题目描述

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

运行代码

#include <iostream>
#include <vector>
#include <algorithm>
#define int long long
#define endl '\n'
const int N = 1010;
const int MOD = 1e9 + 7;void solve() {int n;std::cin >> n;std::vector<std::vector<int>> num(n, std::vector<int>(n));std::vector<int> h(n, 0);std::vector<int> l(n, 0);int cnt = 0;for (int i = 0; i < n; i++) {for (int j = 0; j < n; j++) {std::cin >> num[i][j];if (num[i][j]) {cnt++;h[(i + j) % n]++;l[(i - j + n) % n]++;}}}int mint = 1e9;if (n % 2 == 1) {for (int i = 0; i < n; i++) {for (int j = 0; j < n; j++) {int temp = h[(i + j) % n] + l[(i - j + n) % n];if (num[i][j]) temp--;int k = (2 * n - 1 - temp) + (cnt - temp);mint = std::min(mint, k);}}} else {for (int i = 0; i < n; i++) {for (int j = 0; j < n; j++) {int temp = h[(i + j) % n] + l[(i - j + n + 1) % n];int k = (2 * n - temp) + (cnt - temp);mint = std::min(mint, k);}}}std::cout << mint << endl;
}signed main() {std::ios::sync_with_stdio(0);std::cin.tie(0);int t = 1;while (t--) solve();return 0;
}

代码思路

一、整体思路

  1. 定义问题规模和常量:N表示矩阵的最大尺寸,这里设置为 1010。MOD是一个常量,可能用于某些计算中的取模操作,设置为 1e9 + 7。

  2. 定义solve函数来解决问题:

    • 读入整数n,表示矩阵的边长。
    • 创建一个二维向量num来存储输入的矩阵,同时创建两个长度为n的向量hl,分别用于统计特定方向上的元素数量。
    • 通过双重循环遍历输入矩阵,对于每个位置(i, j):读入矩阵元素num[i][j]。如果该元素为非零值,则增加计数变量cnt,并更新hl向量中对应位置的值。具体来说,通过(i + j) % n(i - j + n) % n的计算结果来确定在hl向量中的位置,并将对应位置的值加一。
    • 初始化变量mint为一个较大的值(1e9)。
    • 如果n是奇数:通过三重循环遍历矩阵的每个位置(i, j)。计算变量temp,它是对应位置在hl向量中的值之和,如果当前位置的矩阵元素为非零值,则减一。计算变量k,根据特定的公式(2 * n - 1 - temp) + (cnt - temp)。更新mintmintk的较小值。
    • 如果n是偶数:与奇数情况类似,通过三重循环遍历矩阵的每个位置(i, j)。计算变量temp,这里的计算方式略有不同,使用(i - j + n + 1) % n来更新l向量中的位置。计算变量k,公式为(2 * n - temp) + (cnt - temp)。更新mintmintk的较小值。
    • 最后输出mint,即最小的操作次数。
  3. main函数中:设置输入输出流的同步,并初始化随机数生成器。读入整数t,表示测试用例的数量,这里固定为 1。调用solve函数来解决问题。

二、原理说明

  1. hl向量的作用:h向量用于统计矩阵中沿着特定对角线方向(通过(i + j) % n确定)上的非零元素数量。l向量用于统计矩阵中沿着另一个对角线方向(通过(i - j + n) % n(i - j + n + 1) % n确定,取决于n的奇偶性)上的非零元素数量。

  2. 计算最小操作次数的原理:

    • 对于奇数n和偶数n,分别采用不同的计算公式来计算最小操作次数。
    • 计算公式中的各个部分分别代表不同的含义:2 * n - 1 - temp2 * n - temp可能表示在某种情况下需要进行的操作次数,与矩阵的大小和当前状态有关。cnt - temp可能表示另一部分操作次数,与非零元素的总数和当前状态下特定方向上的非零元素数量有关。
    • 通过遍历矩阵的所有位置,计算每个位置对应的操作次数,并取最小值作为最终的结果。

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

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

相关文章

手机到了外地ip地址就变了吗

手机到了外地IP地址就变了吗&#xff1f;随着智能手机的普及&#xff0c;人们越来越频繁地使用手机进行各种网络活动。然而&#xff0c;关于手机IP地址是否会随着地理位置的变化而改变&#xff0c;许多用户仍心存疑惑。本文将深入探讨这一问题&#xff0c;揭示IP地址变化的奥秘…

【C/C++】“秒懂”学C/C++不可错过的“经典编程题” — 日期类的经典运用 (含题链接)

“秒懂”学C/C不可错过的“经典编程题” — 日期类的经典运用 (含题链接&#xff09; 1. 计算日期到天数转换(1). 解题思路&#xff1a;(2). 代码实现&#xff1a; 2. 打印日期(1). 解题思路&#xff1a;(2). 代码实现&#xff1a; 3. 日期累加(1). 解题思路&#xff1a;(2). 代…

顶点照明渲染路径

1. 顶点照明渲染路径处理光照的方式 基本思想就是所有的光都按照逐顶点的方式进行计算的&#xff0c;在内置渲染管线中&#xff0c;它只会最多记录8个光源的数据&#xff0c;只会将光相关的数据填充到那些逐顶点相关的内置光源变量 顶点照明渲染路径仅仅是前向渲染路径的一个…

【数据结构】希尔排序(缩小增量排序)

目录 一、基本思想 1.1 引入希尔排序的原因 1.2 基本思想 二、思路分析 三、gap分组问题 四、代码实现 4.1 代码一&#xff08;升序&#xff09; 4.2 代码二&#xff08;升序&#xff09; 五、易错提醒 六、时间复杂度分析 七、排序小tips 一、基本思想 1.1 引入希尔…

【即时通讯】轮询方式实现

技术栈 LayUI、jQuery实现前端效果。django4.2、django-ninja实现后端接口。 代码仓 - 后端 代码仓 - 前端 实现功能 首次访问页面并发送消息时需要设置昵称发送内容为空时要提示用户不能发送空消息前端定时获取消息&#xff0c;然后展示在页面上。 效果展示 首次发送需要…

【老课推荐】基于LangChain和知识图谱的大模型医疗问答机器人项目

在当今数据驱动和人工智能主导的时代&#xff0c;大模型和知识图谱的结合是一个重要的研究和应用方向。大模型实战课程通过48课时&#xff0c;分为六个主要章节&#xff0c;涵盖了从基本概念到高级应用的多方面内容。学员将通过本课程学习如何使用LangChain和OpenAI进行开发&am…

windows10-VMware17-Ubuntu-22.04-海康2K摄像头兼容问题,求解(已解决)

文章目录 1.webrtc camera测试2.ffmpeg 测试3.Ubuntu 自带相机4.解决办法 环境&#xff1a;windows10系统下&#xff0c;VMware的Ubuntu-22.04系统 问题&#xff1a;摄像头出现兼容问题&#xff0c;本来是想开发测试的&#xff0c;Ubuntu方便些。买了海康2K的USB摄像头&#xf…

自动驾驶ADAS算法--使用MATLBA和UE4生成测试视频

原文参考&#xff1a;金书世界 环境搭建参考&#xff1a;用MATLAB2020b和虚拟引擎&#xff08;Unreal Engine&#xff09;联合仿真输出AVM全景测试视频----Matlab环境搭建 matlab参考&#xff1a; https://ww2.mathworks.cn/help/driving/ug/simulate-a-simple-driving-sce…

【Transformer】Positional Encoding

文章目录 为什么需要位置编码&#xff1f;预备知识三角函数求和公式旋转矩阵逆时针旋转顺时针旋转旋转矩阵的性质 原始Transformer中的位置编码论文中的介绍具体计算过程为什么是线性变换&#xff1f; 大模型常用的旋转位置编码RoPE基本原理最简实现形式Llama3中的代码实现 两种…

智汇云舟受邀参加2024第四届国产水科学数值模型开发创新与技术应用研讨会,并成为“科技智水产业联盟”创始成员

在数字化浪潮的推动下&#xff0c;智慧水利作为国家战略的重要组成部分&#xff0c;正迎来前所未有的发展机遇。8月27-29日&#xff0c;由浙江贵仁信息科技股份有限公司主办、浙江省水利学会协办的“2024第四届国产水科学数值模型开发创新与技术应用研讨会”在杭州白马湖建国饭…

ML19_GMM高斯混合模型详解

1. 中心极限定理 中心极限定理&#xff08;Central Limit Theorem, CLT&#xff09;是概率论中的一个重要定理&#xff0c;它描述了在一定条件下&#xff0c;独立同分布的随机变量序列的标准化和的分布趋向于正态分布的性质。这个定理在统计学中有着广泛的应用&#xff0c;尤其…

maven配置文件常用模板

注释很详细&#xff0c;直接上代码 项目结构 内容 父项目 pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi…

context canceled 到底谁在作祟?

一、背景 在工作中&#xff0c;因报警治理标准提高&#xff0c;在报警治理的过程中&#xff0c;有一类context cancel报警渐渐凸显出来。 目前context cancel日志报警大致可以分为两类。 context deadline exceeded 耗时长有明确报错原因 context canceled 耗时短无明确报错…

Android13_SystemUI下拉框新增音量控制条

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 Android13_SystemUI下拉框新增音量控制条 一、必备知识二、源码分析对比1.brightness模块分析对比2.statusbar/phone 对应模块对比对比初始化类声明对比构造方法 三、源码修改…

OpenCV结构分析与形状描述符(11)椭圆拟合函数fitEllipse()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 围绕一组2D点拟合一个椭圆。 该函数计算出一个椭圆&#xff0c;该椭圆在最小二乘意义上最好地拟合一组2D点。它返回一个内切椭圆的旋转矩形。使…

树莓派3B串口通信

树莓派3B串口通信 文章目录 树莓派3B串口通信一、串口的基本认知1.1 关于电器标准和协议&#xff1a;RS232RS422RS485 1.2 关于串口的电平&#xff1a;UARTRS232电平TTL电平 1.3 串口通信引脚接线&#xff1a;1.4 串口的通信协议&#xff1a; 二、树莓派串口通信开发2.1 树莓派…

TensorRT-For-YOLO-Series项目:实现yolov10模型的python-tensorrt推理(对比int8与fp16推理差异)

项目地址&#xff1a;https://github.com/Linaom1214/TensorRT-For-YOLO-Series/tree/cuda-python 算法支持状态&#xff1a; 2024.6.16 Support YOLOv9, YOLOv10, changing the TensorRT version to 10.0 2023.8.15 Support cuda-python 2023.5.12 Update 2023.1.7 support YO…

观趋势 谋发展 2024 SSHT上海智能家居展有哪些创新呈现?

引言&#xff1a;大数跨境发布的《2024全球智能家居市场洞察报告》显示&#xff0c;智能家居市场正迎来快速增长&#xff0c;预计从2024年的1215.9亿美元增长至2032年的6332.0亿美元&#xff0c;复合年增长率为22.9%。 近年来&#xff0c;随着物联网、AI等底层技术的飞速进步&…

kubernetes微服务之ingress-nginx

目录 1 ingress-nginx 介绍 2 Ingress-nginx 的工作原理 3 使用 Ingress-nginx 的步骤 4 部署 ingress &#xff1a; 4.1 开启ipvs 模式 4.2 下载部署文件 4.3 上传镜像到harbor 4.4 修改文件中镜像地址,与harbor仓库路径保持一致 4.5 检查是否running 4.6 将ingress的命名…

轻松上手,高效产出:音频剪辑工具年度精选

不知道你有没有拍vlog记录生活的习惯&#xff0c;有时候视频里穿插进自己的声音能让视频更加丰富贴上自己的标签。这次我们一起探讨当下有哪些好用的在线音频剪辑工具。 1.FOXIT音频剪辑 链接直达>>https://www.foxitsoftware.cn/audio-clip/ 这个工具是一款专业的音…