正题
算是学到了。
问题是这样的,给出一个数n,要你求是十一的倍数且最大的重排数。
明显的结论就是奇偶位之和在mod 11意义下同余。
那么现在显然跟输入的顺序没有关系,我们用cnt[i]表示i出现了多少次。
f[i][j]表示用剩下的i个数在mod 11 组成 j 的方案数有多少种,显然这个f数组支持新增加一个数和删除一个数的贡献,并且复杂度都是11n。
那么我们对于每一个位置从大到小枚举这一位取什么,然后删去这一个数的贡献,判断剩下来奇数位之和是否存在解。
因为奇数位之和存在解那么偶数位之和必定存在解。
代码不重要,重要的是这个对进行背包进行增减的操作。
51万+

被折叠的 条评论
为什么被折叠?



