送分题 题解
Sub 1 是爆搜,Sub 2 是想到贪心策略但是没有预处理串之间,
可以把题目中的取的方式抽象为
但是这样串长之和就是平方级别的了,所以考虑简化:对于每个串,中间的字符的贡献我们是已经确定的,先提前算好,现在只需要最大化串和串之间的贡献,也就是只有串的开头和结尾的信息有用。这样我们就把串长之和变成线性。且串只有 00 01 10 11 四种。
下面考虑贪心策略,重复执行以下策略直到所有栈为空:
如果当前最后一位是 0,先把 00 都用上,用不了了然后用 01。如果这也没有那么就用 11,如果同时有 10 11 那么先用 11 后面还能用上 10,比直接 10 合适。
如果当前最后一位是 1,先把 11 都用上,用不了了然后用 10。如果这也没有那么就用 00,如果同时有 00 01 那么先用 00 后面还能用上 01,比直接 01 合适。
枚举第一位是 0 还是 1 即可。复杂度