AtCoder Beginner Contest 141
[TOC]
Contest Info
[Practice Link](https://atcoder.jp/contests/abc141/tasks)
| Solved | A | B | C | D | E | F |
|---|---|---|---|---|---|---|
| 6/6 | O | O | O | Ø | O | Ø |
- O 在比赛中通过
- Ø 赛后通过
- ! 尝试了但是失败了
- - 没有尝试
Solutions
###D - Powerful Discount Tickets
题意:
有$n$个物品,$m$张优惠券,每个物品价格为$a_i$。
现在要买下所有物品,对一个物品使用$y$张优惠券,可以使其价格变为$\left\lfloor \frac{2^y} \right\rfloor$
思路:
考虑$\left\lfloor \frac \right\rfloor = \left\lfloor \frac{\left\lfloor n / a \right\rfloor} \right\rfloor$,然后用堆贪心即可。
###E - Who Says a Pun?
题意:
给出一个字符串$S$,询问出现两次或以上(不能重叠)的子串的最大长度。
思路:
后缀自动机维护每个结点的最早出现的位置和最晚出现的位置。
###F - Xor Sum 3
题意:
给出$n$个数$a_i$,现在要将这些数分成两堆,使得两堆的异或和相加最大。
思路:
考虑所有数的异或和,那么如果某一位二进制位上该为的数量为奇数个,那么不管这些数怎么分,这一位上总是有一堆是$1$,另一堆是$0$。
那么剩下的都是二进制位上数量为偶数的,那么容易发现两堆数在这一位上的值是一样的,那么直接插入线性基的时候忽略掉数量为奇数的位,然后线性空间中找最大值即可。

浙公网安备 33010602011771号