2017-Sp339-team2

从 Trac 迁移的文章

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

原文章内容如下:

== 流水账 ==
=== chenjb ===
=== oipotato ===

=== subconscious  ===

== 题解 == 

 * A:显然只会操作第一个最大值左边的数,对于一个数,如果它前面,有数字比它大,就不可能把它加到最大值,一组数字都达到最大值的操作数量是最小值和最大值的差,所以枚举起点,往后遇到>=的就取,就能得到每个起点的最优值,当我们加入一个人的时候,根据是否变大,将会对前面每个人的操作数量,还有贡献值都产生相同的影响,当数字严格比之前的最大值大的时候,就会产生新的起点,每个起点都是一个二元组,然后每个询问也是一个二元组,用凸包维护点积的最大值。

 * B:可以理解为恰好k棵有向生成树,用wqs二分解决,将特殊边连上每个点,把是否是特殊边的信息压进边权,需要用左偏树优化的朱刘。

 * C:三分套三分。

 * D:黑白染色,取出现少的。

 * E:相当于对转移的n个矩形做扫描线。

 * F:质数p=3k+2,有k+1到2k+1 (%p)是一个解,且每个值*t%p也是一个解,随机t。(顺便一提这个叫sum-free subset)

 * G:

 * H:

 * I:

 * J:f[i][0/1][j]表示i到父亲的边染了黑色或白色,子树里需要另一种颜色的路径头最深的是j的方案数,分类讨论转移即可。

 * K:考虑最终状态,一定是前面一些无关的数当中1-k,后面一些无关的数当中1-k,这样答案就由1-k内部的逆序对,和1-k跟内部无关的数的逆序对组成,所以求出前i个无关的数,各自都有多少个1-k在之前,剩下的数有多少个1-k在之后,取min即可。

 * L:暴力取前k位,然后循环,不够的话就+1,注意进位。

 * M:枚举一一对应谁,暴力check。

流水账

chenjb

oipotato

subconscious

题解

  • A:显然只会操作第一个最大值左边的数,对于一个数,如果它前面,有数字比它大,就不可能把它加到最大值,一组数字都达到最大值的操作数量是最小值和最大值的差,所以枚举起点,往后遇到>=的就取,就能得到每个起点的最优值,当我们加入一个人的时候,根据是否变大,将会对前面每个人的操作数量,还有贡献值都产生相同的影响,当数字严格比之前的最大值大的时候,就会产生新的起点,每个起点都是一个二元组,然后每个询问也是一个二元组,用凸包维护点积的最大值。
  • B:可以理解为恰好k棵有向生成树,用wqs二分解决,将特殊边连上每个点,把是否是特殊边的信息压进边权,需要用左偏树优化的朱刘。
  • C:三分套三分。
  • D:黑白染色,取出现少的。
  • E:相当于对转移的n个矩形做扫描线。
  • F:质数p=3k+2,有k+1到2k+1 (%p)是一个解,且每个值*t%p也是一个解,随机t。(顺便一提这个叫sum-free subset)
  • G:
  • H:
  • I:
  • J:f[i][0/1][j]表示i到父亲的边染了黑色或白色,子树里需要另一种颜色的路径头最深的是j的方案数,分类讨论转移即可。
  • K:考虑最终状态,一定是前面一些无关的数当中1-k,后面一些无关的数当中1-k,这样答案就由1-k内部的逆序对,和1-k跟内部无关的数的逆序对组成,所以求出前i个无关的数,各自都有多少个1-k在之前,剩下的数有多少个1-k在之后,取min即可。
  • L:暴力取前k位,然后循环,不够的话就+1,注意进位。
  • M:枚举一一对应谁,暴力check。