2017-Sp282-team2

从 Trac 迁移的文章

这是从旧校内 Wiki 迁移的文章,可能存在一些样式问题,您可以向 memset0 反馈。

原文章内容如下:

 [[Image(1.png,500px)]]

== 流水账 ==
=== chenjb ===
最后E过了还是很不错的,通过这个题对动态点分治、树的重心加深了理解。
=== oipotato ===

=== subconscious  ===

== 题解 == 

 * A:每个点的答案是跟自己至少差k个1的子集的最大值+1,对每个点维护一个长度k的数组,表示它的子集对它的贡献还差几个1才能真正产生贡献,考虑如果差的步数更多,值还更小,那就没有存在的必要,所以把长度为k的数组维护成变长的单调队列。

 * B:cjb

 * C:从大到小排序,特判有没有多个最小值,有的话直接bitset模拟dp,倍增可以证明是n^2^/64。

 * D:考虑从全集中去掉一定的物品,取magic个权值最小的物品出来做min背包即可。

 * E:考虑点分治树某个点的贡献,就是它到那些需要增长的关键点的距离差的一个函数,按照mod k意义下讨论即可。

 * F:枚举长度,枚举第一个字母可以确定方案,对差分数组hash来判定是否可行,暴力判定最优答案即可。

 * G:yzc

 * H:sub

 * I:合并两个概率x,y之后得到x+p-2*p*x,动态开点线段树维护即可。

 * J:数学推导可以最后变成对于每个二进制1,选择一个x的合法幂次乘上去,问最后有多少个数字出现奇数次,状态压缩*2^20^动态规划。

流水账

chenjb

最后E过了还是很不错的,通过这个题对动态点分治、树的重心加深了理解。

oipotato

subconscious

题解

  • A:每个点的答案是跟自己至少差k个1的子集的最大值+1,对每个点维护一个长度k的数组,表示它的子集对它的贡献还差几个1才能真正产生贡献,考虑如果差的步数更多,值还更小,那就没有存在的必要,所以把长度为k的数组维护成变长的单调队列。
  • B:cjb
  • C:从大到小排序,特判有没有多个最小值,有的话直接bitset模拟dp,倍增可以证明是n2/64。
  • D:考虑从全集中去掉一定的物品,取magic个权值最小的物品出来做min背包即可。
  • E:考虑点分治树某个点的贡献,就是它到那些需要增长的关键点的距离差的一个函数,按照mod k意义下讨论即可。
  • F:枚举长度,枚举第一个字母可以确定方案,对差分数组hash来判定是否可行,暴力判定最优答案即可。
  • G:yzc
  • H:sub
  • I:合并两个概率x,y之后得到x+p-2*p*x,动态开点线段树维护即可。
  • J:数学推导可以最后变成对于每个二进制1,选择一个x的合法幂次乘上去,问最后有多少个数字出现奇数次,状态压缩*220动态规划。
附加文件