Game with Multiset
小清新贪心
考虑\(w\)是如何组成的,不超过\(w\)的,在多重集中的最大的一个数\(2^p\)一定是要选择的,否则如果不选,那么对其他的一种合法的方案一定存在若干个数的和等于\(2^p\),然后把这些数替换为\(2^p\)就好了
update 2024.7.11
提供一种新做法,从高到低考虑\(w\)的每一位,如果\(w\)的当前位为\(1\),那么考虑多重集中是否有可以直接表示的,如果有显然就直接表示了,否则的话下一位的个数就要加一,具体见代码
还有一种思路就是
这三种思路都是从不同的对象考虑的,一些以\(w\)为考虑对象,另一些以多重集为考虑对象