今年的题总的来说没有那么暴力了,虽然大题似乎比17 18的题的简单一些了,但是还在和去年一样中了语文的坑.
例如第三题最大降雨量求得是7周能量的中位数,我求了7周的中位数总和,第四题的迷宫,忽略了字典序要最小这个点,真的马虎,太马虎.
这次省赛提前一星期接触C++,比赛的时候不停的debug测试,浪费太多时间了,这个锅得背.
填空题浪费了1个半小时,结果降雨量错了,迷宫错了,RSA解密不会写.看来今年已经无缘决赛了,哎,大学生活的遗憾.不该不认真准备.希望以后自己在做什么比赛都能认真细心对待,别浪费时间又浪费了一瓶300块的农夫山泉.
以下是个人对题目的一些思路分析,有错误还请指正!
A.平方和(5分)
【问题描述】
小明对数位中含有 2、0、1、9 的数字很感兴趣,在 1 到 40 中这样的数包
括 1、2、9、10 至 32、39 和 40,共 28 个,他们的和是 574,平方和是 14362。
注意,平方和是指将每个数分别平方后求和。
请问,在 1 到 2019 中,所有这样的数的平方和是多少?
相对简单,没什么需要注意的
B.数列求值
给定数列 1, 1, 1, 3, 5, 9, 17, ...,从第 4 项开始,每项都是前 3 项的和。求
第 20190324 项的最后 4 位数字。
斐波那契的简单延伸
C.最大降雨量
【问题描述】
由于沙之国长年干旱,法师小明准备施展自己的一个神秘法术来求雨。
这个法术需要用到他手中的 49 张法术符,上面分别写着 1 至 49 这 49 个
数字。法术一共持续 7 周,每天小明都要使用一张法术符,法术符不能重复使
用。
每周,小明施展法术产生的能量为这周 7 张法术符上数字的中位数。法术
施展完 7 周后,求雨将获得成功,降雨量为 7 周能量的中位数。
由于干旱太久,小明希望这次求雨的降雨量尽可能大,请大最大值是多少?
简单的贪心就可以求解,这次的题目居然多次涉及贪心.这粗心分丢得真心痛.
D.迷宫
下图给出了一个迷宫的平面图,其中标记为 1 的为障碍,标记为 0 的为可
以通行的地方。
010000
000100
001001
110000
迷宫的入口为左上角,出口为右下角,在迷宫中,只能从一个位置走到这
个它的上、下、左、右四个方向之一。
对于上面的迷宫,从入口开始,可以按DRRURRDDDR 的顺序通过迷宫,
一共 10 步。其中 D、U、L、R 分别表示向下、向上、向左、向右走。
对于下面这个更复杂的迷宫(30 行 50 列),请找出一种通过迷宫的方式,
其使用的步数最少,在步数最少的前提下,请找出字典序最小的一个作为答案。
请注意在字典序中D<L<R<U。(如果你把以下文字复制到文本文件中,请务
必检查复制的内容是否与文档中的一致。在试题目录下有一个文件 maze.txt,
内容与下面的文本相同)
这道题,听过用excel解的,听过用word解的.无奈自己刚刚接触C++,不熟的东西就是不熟,好不容易码出来了,居然还忘了字典顺序,心更痛,而且这道题写了太久.
E.RSA 解密
RSA 是一种经典的加密算法。它的基本加密过程如下。
首先生成两个质数 p, q,令 n = p · q,设 d 与 (p − 1) · (q − 1) 互质,则可
找到 e 使得 d · e 除 (p − 1) · (q − 1) 的余数为 1。
n, d, e 组成了私钥,n, d 组成了公钥。
当使用公钥加密一个整数 X 时(小于 n),计算 C = X d mod n,则 C 是加
密后的密文。
当收到密文 C 时,可使用私钥解开,计算公式为 X = C e mod n。
例如,当 p = 5, q = 11, d = 3 时,n = 55, e = 27。
若加密数字 24,得 24 3 mod 55 = 19。
解密数字 19,得 19 27 mod 55 = 24。
现在你知道公钥中 n = 1001733993063167141, d = 212353,同时你截获了
别人发送的密文 C = 20190324,请问,原文是多少?
这道题想了10分钟,尝试解,但是没能解出来,放弃了.
F.完全二叉树的权值
【问题描述】
给定一棵包含 N 个节点的完全二叉树,树上每个节点都有一个权值,按从
上到下、从左到右的顺序依次是 A 1 , A 2 , · · · A N ,如下图所示:
现在小明要把相同深度的节点的权值加在一起,他想知道哪个深度的节点
权值之和最大?如果有多个深度的权值和同为最大,请你输出其中最小的深度。
注:根的深度是 1。
【输入格式】
第一行包含一个整数 N。
第二行包含 N 个整数 A 1 , A 2 , · · · A N 。
【输出格式】
输出一个整数代表答案。
【样例输入】
7
1654321
这道题难度不高,但是要注意Ai的值可为负数.
G.外卖店优先级
【问题描述】
“饱了么”外卖系统中维护着 N 家外卖店,编号 1 ∼ N。每家外卖店都有
一个优先级,初始时 (0 时刻) 优先级都为 0。
每经过 1 个时间单位,如果外卖店没有订单,则优先级会减少 1,最低减
到 0;而如果外卖店有订单,则优先级不减反加,每有一单优先级加 2。
如果某家外卖店某时刻优先级大于 5,则会被系统加入优先缓存中;如果
优先级小于等于 3,则会被清除出优先缓存。
给定 T 时刻以内的 M 条订单信息,请你计算 T 时刻时有多少外卖店在优
先缓存中。
【输入格式】
第一行包含 3 个整数 N、M 和 T 。
以下 M 行每行包含两个整数 ts 和 id,表示 ts 时刻编号 id 的外卖店收到
一个订单。
【输出格式】
输出一个整数代表答案。
【样例输入】
266
11
52
31
62
21
62
【样例输出】
1
这道题我的思想是先对所有订单进行时间排序 ,之后按着时间步进一步一步研究到T时刻
H.修改数组
【问题描述】
给定一个长度为 N 的数组 A = [A 1 , A 2 , · · · �A N ],数组中有可能有重复出现
的整数。
现在小明要按以下方法将其修改为没有重复整数的数组。小明会依次修改
A 2 , A 3 , · · · , A N 。
当修改 A i 时,小明会检查 A i 是否在 A 1 ∼ A i−1 中出现过。如果出现过,则
小明会给 A i 加上 1 ;如果新的 A i 仍在之前出现过,小明会持续给 A i 加 1 ,直
到 A i 没有在 A 1 ∼ A i−1 中出现过。
当 A N 也经过上述修改之后,显然 A 数组中就没有重复的整数了。
现在给定初始的 A 数组,请你计算出最终的 A 数组。
【输入格式】
第一行包含一个整数 N。
第二行包含 N 个整数 A 1 , A 2 , · · · , A N 。
【输出格式】
输出 N 个整数,依次是最终的 A 1 , A 2 , · · · , A N 。
【样例输入】
5
2 1 1 3 4
【样例输出】
2 1 3 4 5
【评测用例规模与约定】
对于 80% 的评测用例,1 ≤ N ≤ 10000。
对于所有评测用例,1 ≤ N ≤ 100000,1 ≤ A i ≤ 1000000。
这道题应该是挺简单的一道,用了集合去判断数字是否存在,可能考点会出现在大数据时会有超时情况,毕竟比赛的时候所剩时间不多,也就想到什么解的方法就写了什么
I.糖果
【问题描述】
糖果店的老板一共有 M 种口味的糖果出售。为了方便描述,我们将 M 种
口味编号 1 ∼ M。
小明希望能品尝到所有口味的糖果。遗憾的是老板并不单独出售糖果,而
是 K 颗一包整包出售。
幸好糖果包装上注明了其中 K 颗糖果的口味,所以小明可以在买之前就知
道每包内的糖果口味。
给定 N 包糖果,请你计算小明最少买几包,就可以品尝到所有口味的糖
果。
【输入格式】
第一行包含三个整数 N、M 和 K。
接下来 N 行每行 K 这整数 T 1 , T 2 , · · · , T K ,代表一包糖果的口味。
【输出格式】
一个整数表示答案。如果小明无法品尝所有口味,输出 −1。
【样例输入】
653
112
123
113
235
542
512
【样例输出】
2
【评测用例规模与约定】
对于 30% 的评测用例,1 ≤ N ≤ 20 。
对于所有评测样例,1 ≤ N ≤ 100,1 ≤ M ≤ 20,1 ≤ K ≤ 20,1 ≤ T i ≤ M。
这道题又是贪心问题,不断找出每个糖果袋目前含有缺少的糖果的种类数,取最大那个
J.组合数问题
【问题描述】
给 n, m, k,求有多少对 (i, j) 满足 1 ≤ i ≤ n, 0 ≤ j ≤ min(i, m) 且 C i j ≡
0(mod k),k 是质数。其中 C i j 是组合数,表示从 i 个不同的数中选出 j 个组成
一个集合的方案数。
【输入格式】
第一行两个数 t, k,其中 t 代表该测试点包含 t 组询问,k 的意思与上文中
相同。
接下来 t 行每行两个整数 n, m,表示一组询问。
【输出格式】
输出 t 行,每行一个整数表示对应的答案。由于答案可能很大,请输出答
案除以 10 9 + 7 的余数。
【样例输入】
12
33
【样例输出】
1
【样例说明】
在所有可能的情况中,只有 C 2 1 = 2 是 2 的倍数。
【样例输入】
25
45
67
【样例输出】
0
7
【样例输入】
3 23
23333333 23333333
233333333 233333333
2333333333 2333333333
【样例输出】
851883128
959557926
680723120
【数据规模和约定】
对于所有评测用例,1 ≤ k ≤ 10 8 , 1 ≤ t ≤ 10 5 , 1 ≤ n, m ≤ 10 18 ,且 k 是质数。
这道题在剩10分钟的时候开始写的,反正估计也就只能过那些小的数字,混点分.