AtcoderABC222场

news/2024/10/20 16:36:00/

A - Four DigitsA - Four Digits

在这里插入图片描述

题目大意

给定一个整数N,其范围在0到9999之间(包含边界)。在将N转换为四位数的字符串后,输出它。如果N的位数不足四位,则在前面添加必要数量的零。

思路分析

可以使用输出流的格式设置功能来实现这一点。
具体做法是,使用setw(4)和setfill(‘0’)来设置输出格式,将N输出为四位数,并在不足四位时用0进行填充。

时间复杂度

O(1)

AC代码

#include <bits/stdc++.h>
using namespace std;int main() {int n;cin >> n;cout << setw(4) << setfill('0') << n << endl;return 0;
}

B - Failing Grade / B - Failing Grade /

在这里插入图片描述在这里插入图片描述

题目大意

有N个学生参加了一次考试。这些学生被标记为Student 1、Student 2等等,第i个学生得分为ai。
分数低于P分的学生被认为考试不及格,无法获得学分。求考试不及格的学生人数。

思路分析

题目要求计算考试不及格的学生人数,可以通过遍历每个学生的得分,并根据阈值P进行判断来实现。

时间复杂度

O(N)

AC代码

#include<bits/stdc++.h>
using namespace std;int main() {int n, p, ans = 0;cin >> n >> p;for (int i = 0; i < n; i++) {int a;cin >> a;if (a < p)ans++;}cout << ans << endl;return 0;
}

C - Swiss-System TournamentC - Swiss-System Tournament

在这里插入图片描述在这里插入图片描述在这里插入图片描述

题目大意

题目要求模拟一个石头剪刀布比赛,参赛选手分为2N人,根据比赛结果和ID号码对选手进行排名,最终输出排名结果。

思路分析

创建一个大小为2N的数组rank,其中每个元素是一个pair,表示参赛者的胜场数和ID号码。初始时,所有参赛者的胜场数都为0,ID号码按照输入顺序排列。

然后,按照比赛轮数M进行迭代。在每一轮比赛中,遍历每一个比赛对,根据比赛结果判断胜利者,并更新其胜场数。比赛结果的判断通过一个judge函数来实现,根据石头剪刀布的规则,判定两个选手之间的比赛结果。

每轮比赛结束后,根据选手的胜场数对rank数组进行排序,以确定排名。排序时,因为要使用sort函数,所以要首先根据胜场数的负值排序,然后根据ID号码排序。

最后,按照排名顺序输出参赛者的ID号码,注意要将ID号码加1,因为在代码中使用的是0-based索引。

时间复杂度

O(NMlogN)

AC代码

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;// 判断胜负的函数
int judge(char a, char b) {// -1: 平局,0:前一个人胜利,1:后一个人胜利if (a == b) return -1;if (a == 'G' && b == 'P') return 1;if (a == 'C' && b == 'G') return 1;if (a == 'P' && b == 'C') return 1;return 0;
}int main() {int N, M;cin >> N >> M;  // 输入参赛人数N和比赛轮数Mvector<string> S(2 * N);  // 存储所有参赛者的手势序列for (int i = 0; i < 2 * N; i++) {cin >> S[i];  // 输入每个参赛者的手势序列}vector<pair<int, int>> rank(2 * N);  // 存储参赛者的排名和IDfor (int i = 0; i < 2 * N; i++) {rank[i] = make_pair(0, i);  // 初始化排名和ID,初始胜场数为0}// rank[i] = [x,y]  -> 第(i+1)名参赛者的胜场数为 -x,ID为 yfor (int j = 0; j < M; j++) {for (int i = 0; i < N; i++) {int player1 = rank[2 * i].second;  // 第i个比赛对中的第一个参赛者的IDint player2 = rank[2 * i + 1].second;  // 第i个比赛对中的第二个参赛者的IDint result = judge(S[player1][j], S[player2][j]);  // 第j轮比赛中两位参赛者的结果if (result != -1) rank[2 * i + result].first -= 1;  // 根据比赛结果更新排名}sort(rank.begin(), rank.end());  // 按照胜场数对参赛者进行排序}for (auto p : rank) {cout << p.second + 1 << endl;  // 输出最终的排名}return 0;
}

http://www.ppmy.cn/news/1026032.html

相关文章

UEFI概述

UEFI(统一可扩展固件接口)取代传统BIOS(基本输入输出系统) 取代的原因&#xff1a; BIOS开发效率低(汇编语言&#xff0c;代码与硬件的耦合程度高)&#xff0c;性能差(不支持异步工作模式)&#xff0c;可扩展性差(静态链接)&#xff0c;安全性差并且不能对于2TB以上的硬盘进行…

VUE3 动态路由

带参数的动态路由匹配 很多时候&#xff0c;我们需要将给定匹配模式的路由映射到同一个组件。例如&#xff0c;我们可能有一个 User 组件&#xff0c;它应该对所有用户进行渲染&#xff0c;但用户 ID 不同。在 Vue Router 中&#xff0c;我们可以在路径中使用一个动态字段来实现…

07_ansible, 条件选择、加载客户事件、在roles和includes上面应用’when’语句、条件导入、基于变量选择文件和模版、注册变量

10.条件选择 10.1.When语句 10.2.加载客户事件 10.3.在roles和includes上面应用’when’语句 10.4.条件导入 10.5.基于变量选择文件和模版 10.6.注册变量 10.条件选择 转自&#xff1a;http://www.ansible.com.cn/docs/playbooks_conditionals.html#id3 常常来说,一个play的…

【HBZ分享】ES中的Reindex重建索引

Reindex如何实现索引重建&#xff1f; 滚动索引 批量复制 Reindex存在的问题 如果新的索引没有提前创建好&#xff0c;并指定字段类型&#xff0c;那么重建后的新索引类型极有可能会和旧的索引不一致&#xff0c;因为ES他会推断类型&#xff0c;而推断错误率从实战来说那是…

shell从入门到精通(21)运行环境讨论

参考: https://www.gnu.org/software/bash/manual/html_node/Environment.html https://www.gnu.org/software/bash/manual/html_node/Command-Grouping.html 文章目录 关于函数执行的环境关于命令的分组关于命令的搜索、执行过程关于函数执行的环境 当一个程序被调用时,它会…

4.利用matlab符号矩阵的四则运算(matlab程序)

1.简述 符号对象的建立 sym函数 sym函数用于建立单个符号对象&#xff0c;其常用调用格式为&#xff1a; 符号对象名sym(A) 1 将由A来建立符号对象&#xff0c;其中&#xff0c;A可以是一个数值常量、数值矩阵或数值表达式(不加单引号),此时符号对象为一个符号常量&#xff1b;…

11.集群调度

文章目录 集群调度调度约束list-watc机制的概念pod的创建流程 调度过程Scheduler 作用预选策略优选策略指定调度节点nodeNamenodeSelector 亲和性node亲和pod亲和pod反亲和 污点&#xff08;Taint&#xff09;和容忍&#xff08;Tolerations&#xff09;污点(Taint)容忍(Tolera…

AI工具赋能,实现高效变现,实现提前下班

本篇文章很长并很有价值&#xff0c;希望你能耐心看到最后。 导语 在这个信息快速爆炸的时代&#xff0c;人工智能&#xff08;AI&#xff09;成为推动社会进步和创造价值的重要力量。 AI能改变世界吗&#xff1f;当然。 现在吗&#xff1f;不是。 我是一个热爱AI的程序员…