20ZR普转提七连测 Day1

机器人指令


进行 d   m o d   36 0 ∘ d \bmod 360^{\circ} dmod360,讨论一下,发现有四个、两个、一个一循环。然后预处理前四次操作的答案即可,注意对绝对值的处理。

逛餐馆


如果能确定吃哪些餐馆,当然就是不回头依次吃。那么枚举那个餐馆一定吃,在它之前的餐馆可能吃也可能不吃,二分一下吃耗时最小的多少个餐馆,套个区间前 k k k 大数的和的线段树即可。

还有个堆的方法,就是每个餐馆能吃就吃,吃了后看看有没有超限制,如果超过了就弹出堆顶直到满足限制。

符文师

如果确定了一个数组表示对哪些牌进行操作,可以证明只要 ∑ i l i ≤ n \sum_i l_i \leq n ilin,那么一定有方案可以做到。

然后是一个 01 背包模板。

魔法师

1 ≤ t , N , M ≤ 300000 , 1 ≤ p ≤ 1 0 9 1 \leq t,N,M \leq 300000, 1 \leq p \leq 10^9 1t,N,M300000,1p109

问题可以转换成:有 n n n 个可重集合,编号为 i i i 的集合取出前 i i i 大放入新的可重集合 S S S,需要动态维护集合的前 n n n 大的和。

对于多一本书的操作,要确定它需不要要加入 S S S 中,只要看排名是不是 < t <t <t,如果满足的话就加入 S S S 中还要把原来的第 k k k 大删掉。

少一本书的操作,看看它的排名是否 < t <t <t,如果满足就会影响答案,那么把现在的第 k k k 大加入 S S S 中。

你可能需要对每个书柜维护一个平衡树,再对 S S S 维护一个平衡树。但你可以在权值线段树中同时维护出现次数与区间和,来实现区间前 k k k 大和单点修改。

猜你喜欢

转载自blog.csdn.net/qq_39984146/article/details/108432371