摘要: 对于组合数的奇偶性: 根据卢卡斯定理,相当于是在p进制下的分解,对于每一C(n,m),如果n,m不同,那组合数就是偶数 所以组合数C(n,m)为奇数当且仅当 n&m==m 然后就是dp了 设f[i]为以i结尾的方案数 枚举i的子集j,如果j的位置在i的后面且i&j==j,则更新 答案就是所有f[a[ 阅读全文
posted @ 2019-02-21 21:35 Tartarus_li 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 这道题真的难写啊,细节超级多 一看就不能直接背包 考虑到所有的重量都是a*2^b的形式 所以可以按照数位进行分层dp 设f[i][j]表示容量j*2^i时最大的价值(此时的状态) 在每层dp内,只转移b为i的物品 f[i][j]=max(f[i][j],f[i][j-a]+val) 每层处理完之后, 阅读全文
posted @ 2019-02-21 20:24 Tartarus_li 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 这道题有结论啊啊啊 但是不会证啊qaq 最小就是尽量让少的点能够相互到达,每层的边都与上一层的边反向 最大要找到树的重心(这都能写错),然后对于每个子树,尽量让根连出的子树大小等于连到根的子树大小 也就是尽量取 n/2 转化成了0/1背包问题 套路: 对于 ∑a ≤ n observation: 不 阅读全文
posted @ 2019-02-21 15:43 Tartarus_li 阅读(172) 评论(0) 推荐(0) 编辑
摘要: dp[i][j]表示以i为根,且i在原图上对应的点为点j的方案数 可能多个点会对应到原图中的一个点,所以要容斥处理一下 枚举都对应到了哪些点 dp转移方程为 dp[u][j]=π(v∈son[i])∑(k∈adj[j])dp[v][k] 子树间方案数是乘起来啊qaq 然后就是容斥了 bin数组是2^ 阅读全文
posted @ 2019-02-21 13:57 Tartarus_li 阅读(189) 评论(0) 推荐(0) 编辑