P9553 题解
思路
这题直接照着题目说的做就可以了。
我们可以定义一个 数组和 数组,表示当日的学习单词数量和复习单词数量,并定义 表示学习完所有单词需要的天数, 表示学习和复习完所有单词需要的天数。
在输入 的同时,我们可以直接统计入 数组,即 ,并同时更新 。
在输入 的同时,我们可以把这一天的新学直接延续到下一天,并清空这一天的新学数量,即 。
后来读入了 ,我们直接把 从 枚举到 ,把这天的新学量 直接累加到这个复习时间的复习量 里即可。
最后,我们可以把这一特殊日子的复习直接延续到下一天,并清空这一天的复习数量,即 ,然后输出每个 和 即可。
代码
# include <bits/stdc++.h>
using namespace std;
int n, m, k, a[1000005], b[205], x, f1[2205], f2[2205], max1, max2;
int main () {
cin >> n >> m >> k;
for (int i = 0; i < n; ++ i)
cin >> a[i], ++ f1[a[i]], max1 = max (max1, a[i]);
for (int i = 0; i < m; ++ i)
cin >> b[i], f1[b[i] + 1] += f1[b[i]], f1[b[i]] = 0, max1 = max (max1, b[i] + 1);
while (k --) {
cin >> x;
for (int i = 1; i <= max1; ++ i)
f2[i + x] += f1[i];
}
for (int i = 0; i < m; ++ i)
f2[b[i] + 1] += f2[b[i]], f2[b[i]] = 0;
max2 = max1 + x;
cout << max2 << '\n';
for (int i = 1; i <= max2; ++ i)
cout << f1[i] << ' ' << f2[i] << '\n';
return 0;
}

浙公网安备 33010602011771号