广州大学acm新生赛

 

 

 

#include <iostream>
#include <unordered_map>
#include <unordered_set>
#include <map>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;// 定义存储每个队伍的相关数据结构
struct TeamData {int solved_count = 0;                // 通过题目数量int total_penalty = 0;              // 总罚时unordered_map<char, int> attempts;  // 每题的错误尝试次数unordered_set<char> solved;         // 已解决题目集合
};int main() {int n; // 输入的记录条数cin >> n;// 用一个哈希表存储每个队伍的相关数据unordered_map<string, TeamData> teams;// 逐行读取比赛记录for (int i = 0; i < n; ++i) {string team_name; // 队伍名称char problem;     // 题目编号int flag;         // 评测结果:0 表示错误,1 表示通过int time;         // 提交时间cin >> team_name >> problem >> flag >> time;// 获取或初始化队伍的数据TeamData &data = teams[team_name];// 如果该题目已经被正确解答,忽略后续提交if (data.solved.count(problem)) {continue;}if (flag == 1) {// 如果本次提交通过,更新队伍的解题信息data.solved.insert(problem); // 将题目标记为已解决data.solved_count++;         // 解题总数 +1// 总罚时 = 解题用时 + 错误尝试罚时data.total_penalty += time + data.attempts[problem] * 20;} else {// 如果本次提交错误,记录错误尝试次数data.attempts[problem]++;}}// 按规则找出冠军队伍pair<string, TeamData> champion; // champion.first 存队伍名,champion.second 存数据for (const auto &entry : teams) {const string &name = entry.first;   // 当前队伍的名字const TeamData &data = entry.second; // 当前队伍的数据// 判断当前队伍是否比目前记录的冠军更优if (champion.first.empty() || data.solved_count > champion.second.solved_count || // 优先比较解题数(data.solved_count == champion.second.solved_count && data.total_penalty < champion.second.total_penalty)) { // 解题数相同时比较罚时champion = entry; // 更新冠军队伍信息}}// 输出冠军队伍结果cout << champion.first << " " << champion.second.solved_count << " " << champion.second.total_penalty << endl;return 0;
}



 

 

 

#include <iostream>
#include <vector>
#include <cmath>
using namespace std;// 计算 n-r 的所有因子并统计满足条件的因子数量
int count_factors(int n_minus_r, int r) {int count = 0; // 符合条件的因子数量for (int i = 1; i * i <= n_minus_r; ++i) {if (n_minus_r % i == 0) {// 因子 iif (i > r) count++;// 因子 n_minus_r / i    一共两个因子(都要满足大于r的条件)//                                      (且第二个因子不等于第一个)if (i != n_minus_r / i && n_minus_r / i > r) count++;}}return count;
}int main() {int n, q;cin >> n >> q;while (q--) {int k, r;cin >> k >> r;// 计算 n-rint n_minus_r = n - r;// 统计满足条件的因子数量int factors_count = count_factors(n_minus_r, r);// 判断是否满足不少于 k 个因子的条件if (factors_count >= k) {cout << "YES" << endl;} else {cout << "NO" << endl;}}return 0;
}

 




 

 

 

#include<bits/stdc++.h>
using namespace std;const int N = 1000010; // 定义 dp 数组最大长度,保证能处理数据范围
const int mod = 1e9 + 7; // 取模常量,用于防止结果溢出int n, m, k, dp[N], a[N], result = 0; // 定义变量
// n: 初始原材料数量,m: 目标原材料数量,k: 掉落种类数
// dp[N]: 动态规划数组,a[k]: 掉落的可能值int main()
{cin >> n >> m >> k; // 输入初始数量、目标数量、掉落种类int t = m - n;      // 计算所需的最小差值(最小需要补充的原材料数)for (int i = 1; i <= k; i++) {cin >> a[i];    // 输入每次打怪可能掉落的原材料数量}dp[0] = 1; // 初始条件:拥有 0 个原材料的方案数为 1for (int i = 0; i < t; i++) { // 枚举当前原材料数量for (int j = 1; j <= k; j++) { // 遍历每种掉落数量dp[i + a[j]] += dp[i];  // 递推公式:将当前方案数转移到新的状态dp[i + a[j]] %= mod;   // 对结果取模}}int ans = 0; // 存储答案for (int i = t; i < 4e5; i++) { // 枚举所有满足 \( i \geq t \) 的状态ans = (ans + dp[i]) % mod;  // 累加方案数并取模}cout << ans; // 输出最终结果return 0;
}



 

 

 

#include <bits/stdc++.h>
using namespace std;// 模拟游戏逻辑,找出最终的胜负结果
string playGame(priority_queue<int> &aliceCards, priority_queue<int> &bobCards) {while (!aliceCards.empty() && !bobCards.empty()) {// Alice 出最大牌int aliceTop = aliceCards.top();aliceCards.pop();// Bob 出最大牌int bobTop = bobCards.top();bobCards.pop();if (aliceTop == bobTop) {// 如果点数相等,两张牌都丢弃,进入下一轮continue;} else if (aliceTop > bobTop) {// Alice 的牌更大aliceCards.push(aliceTop - bobTop);} else {// Bob 的牌更大bobCards.push(bobTop - aliceTop);}}// 判断最终结果if (!aliceCards.empty() && bobCards.empty()) {return "Alice"; // Alice 获胜} else if (!bobCards.empty() && aliceCards.empty()) {return "Bob"; // Bob 获胜} else {return "draw"; // 平局}
}int main() {int n, m;cin >> n >> m; // 读取 Alice 和 Bob 的牌数// 使用优先队列(大顶堆)来存储牌priority_queue<int> aliceCards, bobCards;// 读取 Alice 的牌for (int i = 0; i < n; i++) {int card;cin >> card;aliceCards.push(card);}// 读取 Bob 的牌for (int i = 0; i < m; i++) {int card;cin >> card;bobCards.push(card);}// 模拟游戏并输出结果cout << playGame(aliceCards, bobCards) << endl;return 0;
}



 

 

解决思路:

  1. 输入和初始化

    • 你有 n 堆石子,每堆有不同的数量。
    • 小明从第 s 堆开始,跳跃步数是 k。每跳一次,小明会到达一个新的堆并从那里拿走一颗石子。
  2. 跳跃的规律

    • 由于石子堆按顺时针排列,并且是环形的,所以小明的跳跃是一个环形遍历。
    • 每次跳跃后,小明到达堆的位置是 (当前堆编号 + k) % n,确保跳跃是环形的,不会超出范围。
    • 小明每次跳跃后会检查当前堆的石子数量,并选择石子数量最少的堆,直到某堆的石子被完全拿完。
  3. 循环遍历直到找到最小石子堆

    • 从起始堆出发,小明每次跳跃到下一堆,直到回到起始堆。每次跳跃时,检查当前堆的石子数量。如果该堆的石子数量小于当前记录的最小值,更新最小值。
    • 由于小明是顺时针跳跃,所以会遍历所有堆。确保能够找到石子数量最少的堆。
  4. 退出条件

    • 小明每跳跃一次,就从当前堆拿走一颗石子。
    • 循环结束时,最先被拿完的堆就是石子最少的堆。
  5. 输出

    • 输出最先被拿完的堆的编号。题目要求输出是 1-based 编号,所以需要对找到的最小堆位置加 1。

代码的执行流程:

  1. 读取输入

    • 获取 nk、石子堆的数量数组 a,以及起始堆的位置 s
  2. 计算跳跃和最小石子堆

    • 根据当前堆的位置进行跳跃,更新最小石子数量的堆。
  3. 输出结果

    • 输出最先被拿完的堆编号。

关键步骤解释:

  1. 最初的起始位置

    • 输入的起始位置是 1-based,所以在程序中需要减去 1 来转换为 0-based 索引。
  2. 跳跃的过程

    • 跳跃过程通过 (当前堆编号 + k) % n 来实现,确保每次跳跃都在有效的堆位置之间循环。
  3. 循环检测

    • 每次跳跃后,检查当前堆的石子数量。如果比当前记录的最小值还小,更新最小值并记录该堆的位置。
  4. 退出条件

    • 当跳回到起始位置时,表示所有堆都已被遍历一遍。

 




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

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

相关文章

【PyQt5教程 四】Qt Designer 样式表(styleSheet)实现基本小部件的自定义动态效果和资源浏览器背景添加方法

目录 一、成果演示&#xff1a; 二、样式表的使用方法: &#xff08;1&#xff09;样式表语法和属性&#xff1a; &#xff08;2&#xff09;样式表代码示例&#xff1a; &#xff08;3&#xff09;伪类和状态&#xff1a; &#xff08;4&#xff09;复合选择器&#xff…

【C++】输入三个整数,输出最大值的高级分析

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;问题描述&#x1f4af;解题思路&#x1f4af;实现与分析方法一&#xff1a;三元运算符的直接应用详细分析&#xff1a;优缺点剖析&#xff1a; 方法二&#xff1a;显式条件…

基于python+django+vue的高校成绩管理系统

系统展示 管理员后台界面 教师界面 学生界面 系统背景 随着教育信息化的不断推进&#xff0c;传统的手工成绩管理方式已经无法满足现代教育管理的需求。传统管理方式不仅效率低下&#xff0c;还容易出错&#xff0c;且难以实现数据的集中化管理和安全访问控制。因此&#xff0c…

怎么为开源项目做贡献提PR?

GitHub 慢的话&#xff0c;https://ask.csdn.net/questions/8166374 复刻项目 以 https://github.com/open-frame/uniapp-init 项目为例 复刻完就会在你的仓库里有个同样的项目 拉取复刻下来的项目 然后常规的改动项目、git推送。比如我改了一个忽略文件&#xff1a; 提交…

记录:ubuntu 使用chattts的过程。

你知道什么是穷人吗&#xff1f;穷人就是没钱还想学习。 git GitHub - 2noise/ChatTTS: A generative speech model for daily dialogue. 因为所以。cosyvoice&#xff0c;gpt-s . 0.先找一个目录吧。 1.命令行模式 duyichengduyicheng-computer:~/gitee$ git clone https:…

vulnhub靶场【hacksudo】之LPE的后续提权方法学习

前言 靶场&#xff1a;hacksudo-lpe的后几个challenge 基于上篇靶场hacksudo-ple的sudo提权 SUID文件提权 ar文件提权 使用find寻找具有SUID权限的文件 find / -perm -us -type f 2>/dev/null查看ar的SUID用法 sudo install -m xs $(which ar) .TF$(mktemp -u) LFILE&…

【 C语言练习(4)—可自己设置游戏规则的猜数字游戏】

C语言练习&#xff08;4&#xff09; 文章目录 C语言练习&#xff08;4&#xff09;前言题目题目解析结果总结 前言 本次写的猜字游戏有两大优点&#xff0c;可重复玩游戏、可自己设置猜数字规则&#xff0c;通过猜数字游戏锻炼循环体和选择结构体 题目 写一个给定猜数次数&a…

【4】数据分析基础(pandas中的series 1)

学习目标2 pandas模块的学习。 pandas是一个基于NumPy的模块&#xff0c;它的功能在于数据的筛选清洗和处理&#xff0c;与NumPy模块相比&#xff0c;pandas模块更擅长处理二维数据。 pandas模块主要有Series和DataFrame两种数据结构。 接下来&#xff0c;我们先学习Series…

创建项目,并且上传到git

第一步 本地新建新项目 第二步 git上新建空项目 第三步 将本地项目添加为git项目 1、复制初始化命令 在新建项目中登录git 2、将本地项目设置为git项目 在IDEA中执行一下命令 3、完成上述操作&#xff0c;IDEA会将本地项目识别为git项目&#xff0c;就可以执行git commit操…

Cisco Packet Tracer | Cisco Packet Tracer - VLAN 实验 - 交换机的 VLAN 划分

关注这个工具的其它相关笔记&#xff1a;Cisco Packet Tracer —— 使用教程合集-CSDN博客 0x01&#xff1a;VLAN 划分 - 单个交换机 0x0101&#xff1a;拓扑搭建流程 从软件底部拖出一台交换机&#xff08;笔者选择的型号是 2960 IOS15&#xff09;&#xff1a; 然后再拖出四…

ICP和EDI许可证办理审核专用的网站系统源码程序下载—专供审核易过使用

在现代互联网及电子商务企业中&#xff0c;ICP许可证和EDI许可证不仅是法律要求&#xff0c;更是企业立足市场的重要基础。这两种许可证能够帮助企业爬梳合规问题&#xff0c;规避法律风险&#xff0c;并提升自身的信誉&#xff0c;增强客户的信任感。本文将详细介绍ICP许可证和…

MySQL Binlog 日志监听与 Spring 集成实战

MySQL Binlog 日志监听与 Spring 集成实战 binlog的三种模式 MySQL 的二进制日志&#xff08;binlog&#xff09;有三种常见的格式&#xff1a;Statement 模式、Row 模式和Mixed 模式。每种模式的设计目标不同&#xff0c;适用于不同的场景&#xff0c;以下是它们的详细对比和…

攻防世界安卓刷题笔记(新手模式)1-4

1.基础android 进入后是这样的页面。查看源代码看看。首先要注意这个软件并没有加壳&#xff0c;所以我们可以直接着手分析。搜索错误提示“Failed”定位到关键代码&#xff0c;看样子就是检验输入的内容 注意到这里有一行关键代码&#xff0c;cond_39对应的正是failed那个地方…

C++核心day3作业

作业&#xff1a; 1.整理思维导图 2.整理课上代码 3.把课上类的三个练习题的构造函数写出来 函数全部类内声明&#xff0c;类外定义 定义一个矩形类Rec&#xff0c;包含私有属性length、width&#xff0c;包含公有成员方法&#xff1a; void set_length(int l); //设置长度v…

Scala:正则表达式

object test03 {//正则表达式def main(args: Array[String]): Unit {//定义一个正则表达式//1.[ab]:表示匹配一个字符&#xff0c;或者是a&#xff0c;或者是b//2.[a-z]:表示从a到z的26个字母中的任意一个//3.[A-Z]:表示从A到Z的26个字母中的任意一个//4.[0-9]:表示从0到9的10…

可视化建模以及UML期末复习篇----UML图

这是一篇相对较长的文章&#xff0c;如你们所见&#xff0c;比较详细&#xff0c;全长两万字。我不建议你们一次性看完&#xff0c;直接跳目录找你需要的知识点即可。 --------欢迎各位来到我UML国&#xff01; 一、UML图 总共有如下几种&#xff1a; 用例图&#xff08;Use Ca…

[创业之路-191]:《华为战略管理法-DSTE实战体系》-2-BLM战略规划与执行的基本框架

目录 一、战略规划&#xff1a;BLM的核心内容 1. 战略规划部分 2 战略执行部分&#xff08;战略解码&#xff09; 二、BLM模型对企业战略制定和执行的价值 2.1 说法1&#xff1a; 1、共同的目标 2、同一种语言&#xff1a;提高团队协作效率 3、最基本的方法 4、执行的…

go引入skywalking

前置条件&#xff1a;安装好jdk11&#xff0c;linux服务器&#xff08;centos7.9&#xff09;&#xff0c;go版本&#xff08;我的是1.18&#xff0c;1.21都可以&#xff09; 1.下载skywalking Downloads | Apache SkyWalking 2.下载agent源码 Downloads | Apache SkyWalkin…

操作系统Lesson11 - 进程调度和批处理系统调度

文章目录 调度三个问题&#xff1a; 进程行为何时调度调度分类依据时钟中断来分类系统环境分类 调度 调度&#xff1a; 一个程序。 调度对象&#xff1a;进程和内核级线程。 1.调度程序调度P1&#xff0c;读取PCB块在CPU中恢复它的现场(ctx)&#xff1b; 2.当CPU执行完了P1之…

java各种锁介绍

1. synchronized锁&#xff1a; • 定义&#xff1a;Java内置的关键字锁&#xff0c;用于实现线程间的同步。它可以修饰方法或代码块。 • 特性&#xff1a;隐式获取和释放锁&#xff0c;自动处理锁的粒度&#xff08;方法级或代码块级&#xff09;&#xff0c;支持重入性。 •…