Game with Multiset

小清新贪心

考虑\(w\)是如何组成的,不超过\(w\)的,在多重集中的最大的一个数\(2^p\)一定是要选择的,否则如果不选,那么对其他的一种合法的方案一定存在若干个数的和等于\(2^p\),然后把这些数替换为\(2^p\)就好了

update 2024.7.11

提供一种新做法,从高到低考虑\(w\)的每一位,如果\(w\)的当前位为\(1\),那么考虑多重集中是否有可以直接表示的,如果有显然就直接表示了,否则的话下一位的个数就要加一,具体见代码

还有一种思路就是

这三种思路都是从不同的对象考虑的,一些以\(w\)为考虑对象,另一些以多重集为考虑对象

posted @ 2024-02-25 10:07  最爱丁珰  阅读(3)  评论(0编辑  收藏  举报