
这道题首先第一眼看过去,我感觉好像很玄学。题目没有要求最后一站的人数,也没有说公交车初始有多少个人,而且他让我们求第一站的上下车人数的方案数。
按照常理,第一站是起始站,只有人上车,可是题目同时还让我们求了下车人数的方案数。那么只有可能:上车的人刚上车就下车了。
如果真是这样,那么还说得过去,毕竟编程题有时候背景确实会不合理,但是相信大家注意到了一句话。

那这就奇怪了,这就是自相矛盾啊。
哪怕真得有人能刚上车就下,那么公交车终点站要全部下光人,那么我们以0反推,我们会发现方案数是无限得。
样例:
输入 1复制
4
2 2
5 2
2 2
输出 1复制
7
输入 2复制
4
2 2
2 5
2 2
输出 2复制
7
甚至样例1第一站下车的人比上车的人还多,那就更离谱了,公交车上的人还能使负数??
所以我认为,这道题不可做,而老师坚定地认为没有问题,以下是他给我们得题解:
C - 萨特兰蒂斯城的一天(二)
a1>=0,b1>=0
a1+...+an=b1+...+bn,只要确定了b1那么a1也一定是可以确定的
对于所有的i,ai+bi<=a1+...+an
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
int a_sum = 0, b_sum = 0;
vector<int> a(n - 1), b(n - 1);
for (int i = 0; i < n - 1; i++) {
cin >> a[i] >> b[i];
a_sum += a[i];
b_sum += b[i];
}
int m = 0;
for (int i = 0; i < n - 1; i++) {
m = max(m, a[i] + b[i] - a_sum);
}
cout << b_sum + 1 - max(m, b_sum - a_sum) << endl;
return 0;
}
而我对我的看法对他得质疑提出了种种疑问,以下是他的回答:

但是我觉得老师回答得不清不楚的,我感觉根本没有可能做这道题,求大家评评理。
当然,我也有可能是错的,不过我只是想把这道题搞懂,希望大佬指点