又是一场相当无聊(毒瘤)的模拟赛QwQ
A. 电话微波炉(暂定)
题意:给出一个序列 $a$ ,一次操作的内容是
问最后序列中所有元素的和最大是多少。
思路:其实就是一个思博贪心,很显然的一点是最终状态下每次操作都不会让结果更优,即对于每一个 $a_i$ ,都有
移项后则有:
然后我们再来看一下操作:
假设对 $a_i$ 进行了一次操作,则
移项,则
我们会发现实质上每次操作就是交换前后的差值,那么只要一开始按照这个差值从大到小排个序就行了。
注意:要记得开 long long
代码:
1 |
|
B. 世界线的波动
题意:给出 $n$ 个不同的点,求这些点能构成的每个点的度数不超过 $2$ 且无 $3n$ 无向图的数量。
思路:其实就是个 $\text{DP}$ ,但是这个出题人就很无聊,非要考压位高精,然后导致这个题的难点就变成了高精(雾
讲一下 $\text{DP}$ 部分:
我们令 $f_i$ 表示选前 $i$ 个点的数量,然后不难发现每加入一个点就有以下三种情况:
这是孤立的一个点,这种情况下
这个点加在了某条链上,这种情况下
这种情况其实并不难,就相当于在 $i - 1$ 个点中选 $j - 1$ 个点组成链然后用乘法原理乘一下就行了。重要的是虽然链上的点的顺序会影响图,但是由于是无向图,所以正着和反着其实是一条链,所以要除 $2$ 。
这个点放进了某个非 $3n$ 元环里,这种情况下
这种情况和上面的差不多,我也懒得讲了(雾
所以就把以上三种情况加起来就行了
注意:高精不能打挂!高精不能打挂!高精不能打挂!
代码:
1 |
|
当然,还有更投稽取巧的做法:我会 $\text{Python}$ !
1 | n = int(input()) |
C. Time Leaper
题意:给出一个金字塔型结构,每一层都是一个正方形网格结构,层数越高边长越小(顶层边长为 $1$ )。到达每一个方格都需要一定的代价,当且仅当两个方格有公共边或公共面积时它们能互相到达,且只能从下层走向上层。同时还有若干条需要支付一定代价的直达通道,问从最下层左上角走到最上层的最小代价是多少。
思路:似乎正解是神仙做法,不过这个东西很显然可以建图后跑最短路,具体做法就是暴力把能到达的点之间连接单向边然后跑 $\text{Dijkstra}$ 就行了。
注意:同层之间走的时候来回的边权并不相等
代码:
1 |
|
总结
考试的时候心态爆炸, $\text{A}$ 题那么思博的贪心只写了 $30pts$ 的暴力, $\text{B}$ 题思博考高精度就不谈了, $\text{C}$ 题最短路还看了半天才看出来,然后就很惨。
以后还是要提高思考的速度,有时候把式子在草稿纸上写出来会更明显一点。