2017-Sp191-team2

从 Trac 迁移的文章

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

原文章内容如下:

== 流水账 ==

== 总结 ==
=== chenjb ===
窒息,两星期没训练,三个人状态都不太行。图论题卡的有点自闭,读题也读错,最后的常数不知道在哪...C是经典的hackenbush graph,又加深了理解。
=== oipotato ===

=== subconscious  ===

== 题解 ==
 * A:

 * B:1到n左到右右到左交替连起来,然后左右两侧分别判没有区间交,有就冲突。

 * C:[https://blog.csdn.net/acm_cxlove/article/details/7854532 Hackenbush Graph]  先做一次dfs确定每个子树SG值,然后再dfs一次,在每个点维护根节点SG值需要是0,其他子树不变的前提下,这棵子树SG值需要是多少。判断每个孩子能不能使得这棵子树做到,统计答案即可。

 * D:sub的线性做法:f[0/1][0/1][0/1]代表x有没有贴到上限 y有没有贴到x  x二进制包含y/不包含,DP内部记录方案数 x1y0数量和 最后一个x1y0后x1+y0数量和,DP即可。

 * E:设全集为U,显然如果|U|=k可行,则|U|=k+1也可行。二分答案,考虑如何判定当前的|U|是否合法。如果不存在条件l0,仅需要满足l1,l2... ln-1,则判定十分简单。为了满足l0,我们的最终目标是最小化Sn-1和S0相同的部分。显然,Si和S0相同的部分的大小是一个区间,我们从前往后贪心的推,得到Sn-1和S0相同部分的大小的范围,取最小值,满足|U-相同部分|>=l0即可。

 * F:

 * G:

 * H:预处理任意两点间不通过加速点的最短路径,然后只维护加速点之间的转移,迭代300次统计答案,注意常数。注意题目中限制了路径上若相邻两加速点为同一点则只加速一次,于是不用管各种自环。注意要用float128硬艹。

 * I:

 * J:考虑点分治统计以每个点为lca的路径。对于一条路径,考虑将其定向,并从终点向起点连一条有向边构成有向环,则题目要求条件等价为环上每条有向边起点和终点的大小关系中,大于号或小于号中的一个至多出现一次。维护每个点的两种符号出现次数,按照权值排序之后即确定最后一条边的符号,通过之前维护好的信息计算贡献。在维护每一种符号出现次数的信息时可以将多余两次的记为两次,即状态0,1,2表示没出现过,出现过一次,出现多于一次,这样即可用一个[3][3]的数组维护每种符号出现次数的状态,统计即可。

 * [https://blog.csdn.net/skywalkert/article/details/85342177 tls]

流水账

总结

chenjb

窒息,两星期没训练,三个人状态都不太行。图论题卡的有点自闭,读题也读错,最后的常数不知道在哪...C是经典的hackenbush graph,又加深了理解。

oipotato

subconscious

题解

  • A:
  • B:1到n左到右右到左交替连起来,然后左右两侧分别判没有区间交,有就冲突。
  • C:Hackenbush Graph 先做一次dfs确定每个子树SG值,然后再dfs一次,在每个点维护根节点SG值需要是0,其他子树不变的前提下,这棵子树SG值需要是多少。判断每个孩子能不能使得这棵子树做到,统计答案即可。
  • D:sub的线性做法:f[0/1][0/1][0/1]代表x有没有贴到上限 y有没有贴到x x二进制包含y/不包含,DP内部记录方案数 x1y0数量和 最后一个x1y0后x1+y0数量和,DP即可。
  • E:设全集为U,显然如果|U|=k可行,则|U|=k+1也可行。二分答案,考虑如何判定当前的|U|是否合法。如果不存在条件l0,仅需要满足l1,l2... ln-1,则判定十分简单。为了满足l0,我们的最终目标是最小化Sn-1和S0相同的部分。显然,Si和S0相同的部分的大小是一个区间,我们从前往后贪心的推,得到Sn-1和S0相同部分的大小的范围,取最小值,满足|U-相同部分|>=l0即可。
  • F:
  • G:
  • H:预处理任意两点间不通过加速点的最短路径,然后只维护加速点之间的转移,迭代300次统计答案,注意常数。注意题目中限制了路径上若相邻两加速点为同一点则只加速一次,于是不用管各种自环。注意要用float128硬艹。
  • I:
  • J:考虑点分治统计以每个点为lca的路径。对于一条路径,考虑将其定向,并从终点向起点连一条有向边构成有向环,则题目要求条件等价为环上每条有向边起点和终点的大小关系中,大于号或小于号中的一个至多出现一次。维护每个点的两种符号出现次数,按照权值排序之后即确定最后一条边的符号,通过之前维护好的信息计算贡献。在维护每一种符号出现次数的信息时可以将多余两次的记为两次,即状态0,1,2表示没出现过,出现过一次,出现多于一次,这样即可用一个[3][3]的数组维护每种符号出现次数的状态,统计即可。
  • tls