2020 年 10 月刷题日志
P1095 守望者的逃离
守望者的可以在一秒逃出
守望者开始有
设
P5143 攀爬者
对所有座标的
P1923 求第 小的数
模板题。考虑分治,随便选一个数
该算法是不稳定的,期望复杂度
实际上存在最坏复杂度为
P1928 外星密码
我考虑用类似状态机的方式解析字符串。
- 当读到正常字符时,把它添到
末尾 - 读到左括号时,则递归
read()
,重复遍添到 末尾 - 右括号或文本结束则返回
写成 BNF 更直观一点
bnf
<pwd> ::= <EMPTY>
| {<ALPHA>}
| <pwd> "[" <NUMBER> <pwd> "]" <pwd>
P1990 外星密码
其中 I
形砖块仅有横放和竖放两种。关键在于 L
形,两个 L
形之间可以用 I
形填充,这让情况变得复杂起来。
对于
- 在
后放一个 I
形砖块。 - 在
后放两个横着的 I
形砖块。 - 对于更前面的递推,较为复杂。
- 两个
L
形砖块对齐,上下翻转也可以,即。 - 两个
L
形砖块可以对顶放,空缺恰用一个I
填充,即。 - 类似
,中间可以再插入两个 I
形,即。 - ……
- 直到
I
形和L
形砖块恰好铺满墙壁,即。
- 两个
容易得到我们的递推式
利用错位相减法,不难化简得到
P1090 合并果子
很容易猜到贪心结论,不断选取两个最小的堆进行合并。
本质上是证明 Huffman 树的构造的正确性,有点复杂。
P4995 跳跳
容易猜到贪心结论,是不断的在剩余石头中最大最小的来回跳。
考虑证明结论,设
注意到平方和为一个定值,重点在后半式。记
利用高中时学的排序不等式,有
于是有反序最小。双指针维护即可。
P1077 摆花
考虑动态规划,记状态
边界条件是