CCF GESP 2024年3月认证 C++ 6级
题目描述
你有四个正整数 $n,a,b,c$,并准备用它们玩一个简单的小游戏。
在一轮游戏操作中,你可以选择将 $n$ 减去 $a$,或是将 $n$ 减去 $b$。游戏将会进行多轮操作,直到当 $n \leq c$ 时游戏结束。
你想知道游戏结束时有多少种不同的游戏操作序列。两种游戏操作序列不同,当且仅当游戏操作轮数不同,或是某一轮游戏操作中,一种操作序列选择将 $n$ 减去 $a$,而另一种操作序列选择将 $n$ 减去 $b$。如果 $a=b$,也认为将 $n$ 减去 $a$ 与将 $n$ 减去 $b$ 是不同的操作。
由于答案可能很大,你只需要求出答案对 $10^9 + 7$ 取模的结果。
输入格式
一行四个正整数 $n,a,b,c$。 保证 $1 \leq a,b,c \leq n$。
输出格式
一行一个整数,表示不同的游戏操作序列数量对 $10^9 + 7$ 取模的结果。
样例说明
样例 1
1 1 1 1
1
样例 2
114 51 4 1
176
样例 3
114514 191 9 810
384178446
数据范围
对于 $20\%$ 的测试点,保证 $a=b=c=1$,$n \leq 30$。
对于 $40\%$ 的测试点,保证 $c = 1$,$n \leq 10^3$。
对于所有测试点,保证 $1 \leq n \leq 2 \times 10^5$。
题目描述
你有 $10^9$ 个牛棚,从左到右一字排开。你希望把 $n$ 头牛安置到牛棚里。麻烦的是,你的牛很好斗,如果他们附近有其他的牛,他们就会不安分地去挑事。其中,第 $i$ 头牛的攻击范围是 $(a_i, b_i)$,这意味着,如果他的左边 $a_i$ 个牛棚或者右边 $b_i$ 个牛棚有其他牛,它就会去挑事。
你想留下一段连续的牛棚,并把其他牛棚都卖掉。请问您最少需要留下多少牛棚,才能保证至少存在一种方案能够把所有的 $n$ 头牛都安置进剩余的牛棚里,且没有牛会挑事?
输入格式
第一行 1 个正整数 $n$。
接下来一行 $n$ 个用空格隔开的正整数 $a_1, a_2, \dots a_n$。
接下来一行 $n$ 个用空格隔开的正整数 $b_1, b_2, \dots b_n$。
输出格式
输出一行一个整数,表示你最少需要留下多少牛棚。
样例说明
样例 1
2
1 2
1 2
4
你可以留下第 1、2、3、4 个牛棚,并在第 1、4 两个牛棚分别放下两头牛。
样例 2
3
1 2 3
3 2 1
7
数据范围
对于 20% 的测试点,保证 n=2。
对于另外 20% 的测试点,保证 n=3。
对 80% 的测试点,保证 n≤8。
对于所有测试点,保证 1≤n≤9,$1≤a_i,b_i≤1000$。