摘要:
思路解释 1. 数据结构选择: 使用 queue 来存储每艘船的到达时间和乘客国籍信息。 使用数组 a 来记录每个国籍的乘客数量。 2. 输入处理: 读取船只数量 n。 对于每艘船,读取其到达时间 t 和乘客数量 k,然后读取每个乘客的国籍 x。 3. 统计不同国籍的乘客数量: 如果某个国籍的乘客数 阅读全文
摘要:
解决思路 广度优先搜索 (BFS):使用 BFS 从起点 x 开始搜索,找到到达终点 y 的最短路径。 队列:使用队列存储当前节点和步数。 访问标记:使用数组 vis 标记节点是否被访问过,防止重复访问。 #include<bits/stdc++.h> #define ll long long us 阅读全文
摘要:
解决思路 深度优先搜索 (DFS):使用 DFS 枚举所有可能的骰子点数组合。 剪枝:在 DFS 过程中,如果当前点数和已经超过 sum 或者剩余骰子无法达到 sum,则剪枝。 字典序输出:由于 DFS 的递归顺序,天然保证了字典序输出。 #include<bits/stdc++.h> #defin 阅读全文
摘要:
解决思路 二分查找:使用二分查找来确定舞台的最小大小 K。 检查函数:定义一个检查函数 check(mid),判断在舞台大小为 mid 时,演出是否能在 T_max 时间内完成。 优先队列:使用优先队列模拟舞台上的奶牛,确保每次有奶牛完成表演时,下一头奶牛立即上台。 更新边界:根据检查函数的结果,更 阅读全文
摘要:
解决思路 二分查找:使用二分查找来确定每个成员分到的猫猫数量的最大值。 检查函数:定义一个检查函数 check(mid),判断在每个成员最多分到 mid 只猫猫的情况下,是否可以将所有猫猫分完 更新边界:根据检查函数的结果,更新二分查找的边界,直到找到最小的不满度。 #include <bits/s 阅读全文
摘要:
解决思路 二分查找:使用二分查找来确定伐木机锯片的最大高度 H。 检查函数:定义一个检查函数 check(mid),判断在高度 mid 时,能否得到至少 M 米的木材。 更新边界:根据检查函数的结果,更新二分查找的边界,直到找到最大的 H。 #include <bits/stdc++.h> #def 阅读全文
摘要:
解决思路 读取输入:读取数组和查询数。 二分查找:对每个查询数进行二分查找,找到其在数组中第一次出现的位置。 输出结果:输出每个查询数在数组中第一次出现的位置。 #include <bits/stdc++.h> #define ll long long using namespace std; co 阅读全文
摘要:
解决思路 计算总和:首先计算所有神秘物品的神秘指数和 sum。 枚举分组数:从 n 开始枚举分组数 i,尝试将神秘物品分成 i 组。 检查分组可行性:对于每个分组数 i,检查是否可以将神秘物品分成 i 组且每组的神秘指数和相同。 输出结果:找到最小的可行分组数 i,输出每组的神秘指数和。 #incl 阅读全文
摘要:
解决思路 读取输入:读取糖果的数量 n 和每个糖果距左边第一颗糖果的距离。 排序:对糖果的距离进行排序。 枚举分割点:枚举两个分割点,将糖果分成三段,计算每段的长度,并求出总长度的最小值。 #include <bits/stdc++.h> #define ll long long using nam 阅读全文
摘要:
解决思路 计算总距离:首先计算贝茜不跳过任何检查点的总行进距离。 尝试跳过每个检查点:对于每个可以跳过的检查点,计算跳过该检查点后的行进距离,并记录最小的行进距离。 输出结果:输出最小的行进距离。 #include <bits/stdc++.h> #define ll long long using 阅读全文
摘要:
解决思路 读取输入:读取选手数量 n 和计划录取人数 m,以及每个选手的报名号和笔试成绩。 排序:根据笔试成绩对选手进行排序,如果成绩相同,则按报名号由小到大排序。 确定面试分数线:计算 m * 1.5(向下取整)名选手的分数作为面试分数线。 筛选进入面试的选手:筛选出笔试成绩不低于面试分数线的所有 阅读全文
摘要:
解决思路 定义结构体:定义一个结构体 Student 来存储每个学生的信息和奖金总数。 读取输入:读取每个学生的信息,并计算每个学生的奖金总数。 3. 排序:根据奖金总数对学生进行排序,如果奖金总数相同,则按输入顺序排序。 输出结果:输出获得最多奖金的学生的姓名、奖金总数,以及所有学生获得的奖学金总 阅读全文
摘要:
解决思路 初始化:定义一个结构体 node 来存储每一天的可用人数和天的编号。 读取输入:读取每个人的可用性,并统计每一天的可用人数。 排序:根据每一天的可用人数进行排序。 输出结果:输出可用人数最多的天的编号,如果有多天满足条件,用逗号分隔。 #include <bits/stdc++.h> #d 阅读全文
摘要:
解决思路 读取输入:读取每组奶牛的名字。 排序:对每组奶牛的名字进行排序,以确保相同的组合总是以相同的顺序出现。 记录出现次数:使用 map 记录每组奶牛组合出现的次数。 计算最大次数:遍历 map,找到出现次数最多的组合。 #include <bits/stdc++.h> #define ll l 阅读全文
摘要:
#include <bits/stdc++.h> #define ll long long using namespace std; const int N = 2e5 + 10; // 使用map来记录每个城市前两个字母和州的组合出现的次数 map<string, int> vis; string 阅读全文
摘要:
#include <bits/stdc++.h> #define ll long long using namespace std; const int N = 1e3 + 10; // 使用map来记录每个化学成分的出现次数 map<int, int> vis; int n, x, ans = - 阅读全文
摘要:
解决思路 排序:首先将所有工作按照截止时间 D_i 进行排序。 优先队列:使用一个最小堆来存储当前选择的工作的利润。 选择工作:遍历所有工作,如果当前工作的截止时间大于堆的大小,则将该工作加入堆中;否则,如果当前工作的利润大于堆顶的利润,则替换堆顶的工作。 #include <bits/stdc++ 阅读全文
摘要:
#include<bits/stdc++.h> using namespace std; typedef long long ll; const int N = 1e3+10,inf = 0x3f3f3f3f; priority_queue<int,vector<int>,greater<int> 阅读全文
摘要:
#include <bits/stdc++.h> using namespace std; typedef long long ll; const int N = 1e3 + 10, inf = 0x3f3f3f3f; // 优先队列(最小堆),用于存储叶结点的权值 priority_queue<i 阅读全文