题目 | 类型 | 难度 |
---|---|---|
Alice and Bob | 模拟 | ★★★ |
Alice’s Prime | 枚举,队列 | ★★ |
Bonus | 拓扑排序 | ★★★★★ |
Colombian_Number | 枚举 | ★★ |
Matrix Word | 统计 | ★ |
Robot | 模拟 | ★ |
Alice and Bob
题意
掷骰子游戏,有豹子,对子,点子三类,比谁大?
思路
为了方便比较,可以直接把三种骰子的情况映射到一个整数,用这个整数作为优先级,然后使用这个整数进行比较。
骰子的优先级依次为$1,6,5,4,3,2$,我们用$g(x) = 7 - x \mod 6$,映射优先级依次为$0,1,2,3,4,5$。
这样,我们使用下面的函数映射三颗骰子的优先级(\left 不被mathjax 支持?mathjax官方文档里有,我怎么搞也搞不出来,不知道为何)
标程
1 |
|
Alice’s Prime
题意
判断一个整数是否满足依次删去最后一位得到的数都是素数。
思路
$1$位的素数只有$2,3,5,7$,所以最高位只能是这4个数。
$2$位及以上的素数只能是奇数,而且不能是$5$,所以末尾只能加$1,3,7,9$。
所以如果$p$是满足条件,那么就判断${10p+1,10p+3,10p+7, 10p+9}$是否为是素数。
用一个队列来存储和生成所有满足条件的数即可(题目已经给了提示,这样的数不超过83个)。
标程
1 |
|
Bonus
题意
题目来源于 HDOJ 2647 Award,稍微有修改。
有一个员工表现的对比情况,表现最差的员工拿888奖金,每高一级多加1000,求最少需要给多少奖金?
但是对比情况可能会有矛盾的情况,这种情况下,每个人都发888。
思路
拓扑排序的裸题。
根据员工表现情况对比构图,从表现好的员工节点连一条有向边只想表现差的员工(反向构图也可以,后面反过来算即可)。
然后拓扑排序,如果存在环,那么就是存在矛盾,否则计算出所有节点的层次 $level_i \mid i = 1,2,\ldots,n$。
标程
1 |
|
Colombian_Number
题意
题目来源于 OEIS A003052。
判断一个正整数$n$,是否满足不存在整数$k$,使得$n$等于$k$加上$k$的数码累加和。
思路
显然,我们可以枚举$n-1,n-2,\ldots,1$看是否存在这样的$k$。但是,$n=10^9$,这么做的效率太低了。
我可以观察一下,枚举到什么时候就可以停止,不需要一直枚举到$1$。
所以,只要枚举很少的量就可以了,从而能在时限内完成枚举。
标程
1 |
|
Matrix Word
题意
题目是CF原题,题号不记得了:p。
一个字符矩阵去掉行列不唯一的字符得到字符的序列。
思路
统计行、列出现字符的次数,最后按行列顺序输出行列都唯一的字符即可。
标程
1 |
|
Robot
题意
题目是原题,CF 583B Robot’s Task。
一个机器人在坐标轴来回走,任务排一行,完成某个任务之前必须满足$a_i$个任务,问机器人最少需要转几次身。
思路
简单模拟即可。
标程
1 |
|