青少年软件编程(C语言)等级考试试卷(四级)
1、
兔子不吃窝边草
有谚语云:“兔子不吃窝边草”。现给定若干块排列成一条线的草皮,假设兔子从任何一块草皮开始吃,但吃完一块后,绝对不吃直接相邻的草皮,则兔子最多可以吃掉多少草?
时间限制:10000
内存限制:65536
输入
输入第一行给出两个正整数,即 N (≤ 10
5
) 为草皮的块数、 i (1 ≤ i ≤ N) 为兔子开始吃的第一块草皮的编号。第二行给出 N 个正整数 (≤ 10
3
),以空格分隔,依次表示每块草皮的含草量。
输出
首先在一行中输出这只兔子最多可以吃掉的草量。下一行按兔子吃草的顺序输出每块被吃掉的草皮的编号。同行数字以 1 个空格分隔,行首尾不得有多余空格。 注意:我们必须假设兔子只朝一个方向跳着吃草,否则如果它可以来回跳,就能吃掉所有的草了。如果朝左右两个方向得到的结果一样,则兔子总是喜欢向左边跳;并且如果有多块草皮都可以得到同样的结果,兔子总是选择跳到离自己最近的那块。
样例输入
样例1:
10 4
2 1 4 3 1 1 5 2 3 1
样例2:
10 8
2 1 4 3 1 1 5 2 3 1
样例输出
样例1:
11
4 7 9
样例2:
9
8 6 3 1
2、
漂亮的序列
对于给定的整数 m,我们称一个序列是“漂亮”的,如果它包含至少 2 个整数,并且有 2 个相邻数字的差不超过m。你的任务是计算一个给定的 n 个正整数的序列中,有多少个子序列是漂亮的。
时间限制:6000
内存限制:65536
输入
输入第一行给出 2 个正整数 n 和 m (2 ≤ n ≤ 10
5
, 1 ≤ m ≤ 10
3
),随后一行给出序列中 n 个不超过 10
5
的正整数。同行数字间以空格分隔。
输出
输出原始序列中漂亮子序列的个数。因为答案可能非常大,所以你需要输出对 1000000007 (10
9
+ 7) 取模后的结果。
样例输入
4 2
5 3 8 6
样例输出
8
提示
样例解释:
1、子序列下标为 {1, 2}, 对应值为 {5, 3};
2、子序列下标为 {1, 4}, 对应值为 {5, 6};
3、子序列下标为 {3, 4}, 对应值为 {8, 6};
4、子序列下标为 {1, 2, 3}, 对应值为 {5, 3, 8};
5、子序列下标为 {1, 2, 4}, 对应值为 {5, 3, 6};
6、子序列下标为 {1, 3, 4}, 对应值为 {5, 8, 6};
7、子序列下标为 {2, 3, 4}, 对应值为 {3, 8, 6};
8、子序列下标为 {1, 2, 3, 4}, 对应值为 {5, 3, 8, 6}。
3、
园林修整
园林修整中,常利用树木来形成整齐的区域分割线。园丁要将树木按高度修剪成递增或递减的形状 —— 如果一棵树太高了,就需要裁剪;如果太矮了,则需要替换。修整所花费的力气与裁剪或替换树木的数量成正
2024 年12 月 C语言等级考试 4级真题