摘要: 解题思路 这道题目要求将一个正整数数列分成M个连续段,使得各段和的最大值最小。这是一个典型的二分查找应用问题,我们需要找到满足条件的最小最大值。 方法思路 二分查找:在可能的最大值范围内进行二分查找 检查函数:对于每个中间值mid,检查是否能将数列分成不超过M段,且每段和不超过mid 边界确定:左边 阅读全文
posted @ 2025-05-20 17:58 CRt0729 阅读(82) 评论(0) 推荐(0)
摘要: 解题思路 这道题目要求我们从多个候选人中找出票数最多的总统候选人。由于票数可能非常大(达到100位数字),我们需要使用字符串来处理票数比较。 方法思路 字符串比较:使用字符串存储票数,避免大数处理问题 比较规则: 首先比较字符串长度,长度更大的票数更大 如果长度相同,则直接进行字符串字典序比较 记录 阅读全文
posted @ 2025-05-20 17:55 CRt0729 阅读(74) 评论(0) 推荐(0)
摘要: 解题思路 这道题目要求对学生的生日信息进行排序,按照年龄从大到小(即出生日期从早到晚)的顺序输出姓名。如果生日相同,则输入靠后的同学先输出。 方法思路 结构体存储:使用结构体存储每个学生的姓名、出生年月日和输入顺序ID 自定义排序: 首先按年份从小到大排序 年份相同则按月从小到大排序 年月相同则按日 阅读全文
posted @ 2025-05-20 17:54 CRt0729 阅读(36) 评论(0) 推荐(0)
摘要: 解题思路 这道题目要求将N条绳子切割成K条长度相同的绳子,求每条绳子的最大可能长度。这是一个典型的二分查找问题,我们需要找到满足条件的最大切割长度。 方法思路 二分查找:在可能的最大长度范围内进行二分查找 精度处理:将长度转换为整数处理以避免浮点数精度问题 检查函数:对于每个中间值,检查是否能切割出 阅读全文
posted @ 2025-05-20 17:47 CRt0729 阅读(37) 评论(0) 推荐(0)
摘要: 解题思路 这道题目要求我们找到一种最优的攻击顺序,使得游戏结束时剩余的怪兽数量最少。通过分析题目规则,我们可以发现关键在于如何最大化消灭怪兽的数量。 方法思路 统计频率:统计每个攻击力/防御力值的出现次数 找出最大值:剩余怪兽的最小数量等于出现次数最多的那个攻击力/防御力值的出现次数 数学推导:因为 阅读全文
posted @ 2025-05-20 17:43 CRt0729 阅读(177) 评论(0) 推荐(0)
摘要: 解题思路 这道题目要求找出满足特定条件的城市对:两个城市的前两个字母互为对方所在州的代码,并且来自不同的州。我们需要高效地统计这样的特殊城市对数。 方法思路 字符串处理:提取每个城市名称的前两个字母作为关键标识 哈希映射:使用map来记录州代码和城市前两字母的组合 配对统计:检查当前城市前两字母和州 阅读全文
posted @ 2025-05-20 17:38 CRt0729 阅读(22) 评论(0) 推荐(0)
摘要: 解题思路 这道题目要求计算数组中满足A-B=C的数对个数。由于数组可能很大,我们需要高效的统计方法。 方法思路 哈希统计法:使用unordered_map统计每个数字出现的次数 数学转换:将A-B=C转换为A=B+C,统计每个数字B的B+C出现的次数 累加结果:遍历数组,累加每个数字B对应的B+C的 阅读全文
posted @ 2025-05-20 17:32 CRt0729 阅读(58) 评论(0) 推荐(0)
摘要: 解题思路 这道题目要求统计一个整数数组中每个数字出现的频率,并按数字升序输出结果。由于数字的范围可能很大(-10^9到10^9),我们需要使用高效的数据结构来统计频率。 方法思路 使用map容器:利用C++的map<int,int>来统计数字频率。map会自动按键(数字)升序排列,正好满足题目输出要 阅读全文
posted @ 2025-05-20 17:24 CRt0729 阅读(32) 评论(0) 推荐(0)
摘要: #include<bits/stdc++.h> using namespace std; int n,m; // n-集合中字符串数量,m-查询次数 map<string,int> vis; // 使用map存储字符串出现情况 int main() { cin >> n; // 读取字符串集合数量 阅读全文
posted @ 2025-05-20 17:22 CRt0729 阅读(10) 评论(0) 推荐(0)
摘要: 解题思路 这道题目要求我们实现一个数字查询系统,判断给定的数字是否存在于预先给定的集合中。由于数字的范围可能很大(-10^9到10^9),传统的数组标记法不再适用,因此需要使用更高效的数据结构。 方法思路 使用map容器:由于数字的范围很大,使用数组标记法会消耗过多内存。这里使用C++的map容器来 阅读全文
posted @ 2025-05-20 17:15 CRt0729 阅读(12) 评论(0) 推荐(0)
摘要: #include<bits/stdc++.h> using namespace std; int vis[1010],a[1010]; int n,d; int main() { cin >> n >> d; for(int i = 1; i <= d; i++) { cin >> a[i]; // 阅读全文
posted @ 2025-05-20 17:13 CRt0729 阅读(108) 评论(0) 推荐(0)
摘要: 解题思路 这道题目要求找出未到达集合地点的同学编号。已知班级有N位同学,编号从0到N-1,M次报数中可能包含重复报数,需要确定哪些编号从未被报出过。 方法思路 标记数组法:使用一个标记数组vis来记录哪些编号已经被报出过。数组的索引代表同学编号,数组的值表示该编号是否被报出过(1表示已报出,0表示未 阅读全文
posted @ 2025-05-20 17:13 CRt0729 阅读(301) 评论(0) 推荐(0)
摘要: 解题思路 这道题目要求根据输入的学号查询对应的分数,如果学号不存在则输出"Not found"。关键在于如何高效地存储和查询学号与分数的对应关系。 方法思路 标记数组法:使用一个标记数组vis来存储学号和分数的对应关系。数组的索引代表学号,数组的值表示该学号对应的分数。 输入处理: 首先读取学生人数 阅读全文
posted @ 2025-05-20 17:10 CRt0729 阅读(27) 评论(0) 推荐(0)
摘要: 解题思路 这道题目要求找出数组中出现次数最多的数字(众数),如果有多个数字出现次数相同且都是最多,则输出其中最小的那个数字。 方法思路 标记数组法:使用一个标记数组vis来记录每个数字出现的次数。数组的索引代表数字本身,数组的值表示该数字出现的次数。 输入处理:读取数组长度n,然后读取n个数字,每读 阅读全文
posted @ 2025-05-20 17:09 CRt0729 阅读(28) 评论(0) 推荐(0)
摘要: 解题思路 这道题目要求判断一个数字m是否在一个给定的数组中出现过。解题的关键在于如何高效地进行查询。 方法思路 标记数组法:我们可以使用一个标记数组vis来记录哪些数字出现过。数组的索引代表数字本身,数组的值表示该数字是否出现过(1表示出现过,0表示未出现过)。 输入处理:首先读取数组长度n,然后读 阅读全文
posted @ 2025-05-20 17:05 CRt0729 阅读(34) 评论(0) 推荐(0)