官方题解|竞赛
2025-04-28 12:44:52
发布于:浙江
5阅读
0回复
0点赞
我们设目前比分为 , 下一次的比分为 ,两个时间点之间可能平局的局数有多少。
首先我们思考一下,最早的平局的分数应该是多少? 应该是 ,同理,最后一次可以的平局可能是多少?应该是 。这样我们只需要统计两个点之间的局数就可以了。
此外有一些特殊情况,比如连续三局的分数为 , , ,现在有多少种可能的平局?
针对上述两种情况处理完成,便可以完成本次的题目。
#include<bits/stdc++.h>
using namespace std;
using i64 = long long;
using i32 = int32_t;
int main() {
ios::sync_with_stdio(false), cin.tie(nullptr);
i64 a1 = 0, b1 = 0;
i64 t = 1;
int n;
cin >> n;
for (int i = 1; i <= n; i++) {
i64 x, y;
cin >> x >> y;
i64 a = max(a1, b1);
if (a1 == b1) a++;
i64 b = min(x, y);
if (a <= b) { t += b - a + 1; }
a1 = x;
b1 = y;
}
cout << t << endl;
}
这里空空如也
有帮助,赞一个