- 2025年新学期选拔赛
【题解】2025年新学期选拔赛
- @ 2025-3-26 18:48:51
T1 王老师的新水杯
难度:简单数学计算。
算法:数学,模拟。
子任务 ( 分):由于两种方式的喝水量相同,上下限相等,输出 即可。
子任务 ( 分):保证了 ,因此上限为 ,下限为 ,直接输出 即可。需要注意数据范围,需要使用 long long 类型记录答案。
子任务 ( 分):此时 的大小不一定,加一个判断分别处理即可。
C++ 代码:
#include <bits/stdc++.h>
using namespace std;
int main()
{
long long n, x, y;
cin >> n >> x >> y;
if (x > y) cout << n * (x - y) << endl;
else cout << n * (y - x) << endl;
return 0;
}
T2 王老师骑行健身
难度:循环、求和、高级循环控制(break/continue)。
算法:模拟。
子任务 ( 分):保证了刚好骑了三天,可以用三个 if 分别判断 a[1]、a[1]+a[2] 或 a[1]+a[2]+a[3] 是否大于等于 。
子任务 ( 分):保证了 a[i]=3,所以必然是第 天达到了 千米。
子任务 ( 分):在循环的过程中对输入的变量求和,当总和达到 时输出天数并停止循环即可。
C++ 代码:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n, ai, sum;
cin >> n;
sum = 0;
for (int i = 1; i <= n; i ++ )
{
cin >> ai;
sum += ai;
if (sum >= 100)
{
cout << i;
break;
}
}
return 0;
}
T3 数数放了几天假
难度:简单字符串题。
算法:字符串处理。
子任务 ( 分):字符串中仅包含 .,每天都放假,一共上了 天班,输出 即可。
子任务 ( 分):由于不好办 ~,只需要计算 o 的数量即可。
子任务 ( 分):可以用 double 类型计算结果。更建议尽可能避免浮点数运算,分别统计半天和整天上班的数量,最后计算结果。
C++ 代码:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
string s;
cin >> n;
cin >> s;
assert(n == s.size());
int one = 0;
int half = 0;
for (int i = 0; i < n; i ++ )
{
if (s[i] == 'o') one ++;
if (s[i] == '~') half ++;
}
one += half / 2;
half %= 2;
cout << one;
if (half == 1) cout << ".5" << endl;
return 0;
}
T4 再整理一次水杯
和 2025年新学期热身赛 的 “D. 缺or满?” 几乎一样,不同的是这次只能倒掉了,因此把所有水杯的水量倒成最少的水量即可。
难度:数组、求最值、求和。
算法:贪心,模拟。
子任务 ( 分):保证了最后一项为最小值,不需要额外求一遍最小值了。
子任务 ( 分):保证了第一项为最小值,不需要额外求一遍最小值了。
子任务 ( 分):正常求出最小值后,求出“每个数和最小值的差”之和即可。
C++ 代码:
#include <bits/stdc++.h>
using namespace std;
int n;
int a[1005];
int main()
{
cin >> n;
for (int i = 1; i <= n; i ++ ) cin >> a[i];
int minAi = a[1];
for (int i = 1; i <= n; i ++ )
minAi = min(minAi, a[i]);
int ans = 0;
for (int i = 1; i <= n; i ++ )
ans += a[i] - minAi;
cout << ans << endl;
return 0;
}
0 comments
No comments so far...