
动态规划-状态压缩DP
Toooooocold
这个作者很懒,什么都没留下…
展开
-
HDU 6125 Free from square
由于对于一个合法的答案,sqrt(500)后的素数最多只会用到一个,所以只对前8个素数状压后01背包。 dp(S, k)表示素数状态为S时由k个自然数组成的方法有几种。 再对后面的素数分别01背包。原创 2017-08-18 22:09:08 · 462 阅读 · 0 评论 -
HDU 6085 Rikka with Candies
因为题目要求答案mod 2,所以类似CS Academy #32的Light Count,将5e4的空间压缩成大概800份,每份空间用64位ULL状压。对于每个qk,求得多少对ai % bj = qk, 即ai = bj*x+qk && qk<=bj-1.将q数组和b数组从大到小排序后,枚举qk,如果存在还未使用过的bj>qk,那么类似于素数筛,将0, bj, 2*bj, 3*bj...异或进d数组,如果大于q原创 2017-08-08 22:01:15 · 229 阅读 · 0 评论 -
CS Academy Round #32 Light Count
内存限制了12MB.所以输入是题目给的随机数。数据大小是5*10^7,可以将其分成781250份,每份一个ULL表示状压,最后树状数组做。学到了__builtin_popcountll(),快速得到一个二进制数中有几个1.代码:#include#define pb push_back#define fi first#define se secondusing nam原创 2017-06-11 15:31:13 · 366 阅读 · 0 评论