雨森润奈
takanashi_mifuru · · 题解
不需要卡常的
考虑容易发现与
然后遇到了一个困难的问题就是如果遇到两种选择怎么搞,容易发现这样的话随便选一个,最后剩下的有用的数必然只有一种,考虑用任意位和确定位重新建立字符串,以确定位为
容易发现如果我在这个位置选择或,相当于是让我的任意点集合与当前所指向的集合或在一起。
如果选择与要求我的任意点集合包含我按位取反后的集合,然后你发现按照这个思路,如果在这个位置选择或,我们必然会得到全集,后续怎么选都无所谓可以直接产生贡献。
于是我们能够确认我们每次选什么,得到了一个
我们肯定不希望得到这个复杂度考虑优化一下后面的部分,容易发现如果把每个点后面第一个与他相同的元素位置记录下来,那么每次相当于所有点都往后取一次,把所有最大值保留并在那个位置贡献答案,然后一直做,如果一直维护这个肯定做不了,考虑这样的话意味着最终选取的点集合一定能用一个点替代,而这个长得有点像字典序的东西显然可以用字符串哈希维护。
这样的话我们就把后面变成了