2015-C09-team2/solution

从 Trac 迁移的文章

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

原文章内容如下:

=== A. Alarm Clock ===

枚举所有时间即可。

=== B. Buffcraft ===

枚举在第一类中选多少个,然后贪心。

=== C. Combinator Expression ===
=== D. Digits ===

统计1到一个充分大的数(1e6就够了)间的全部数字再处理询问。

=== E. Expression ===
=== F. Fragmentation ===
=== G. Grave ===

枚举上下左右即可。

=== H. Hiking in the Hills ===

注意到必定存在除首尾两端之外均在三角形边界上的路径。将所有顶点、起点和终点视为结点,三角形边作为边,起点和终点与所在三角形顶点间也连边。求一次最短路。

=== I. Instruction ===

在最后时刻才改变开关方向,这样可以依序处理每辆列车所需的操作,到最后才按时间排序。

=== J. Joy of Flight ===

先计算出k秒间风速所造成的偏移量之和,然后再从起点的偏移位置移动到终点。

=== K. Kebab House ===

用f[i]表示i时间最后一次做梦对应的方案数,s为i时间之前最后一个产品制作结束的时间。设i所属产品容许做梦次数为k。
 * k == 0。f[i] = 0。
 * k == 1。f[i] = sum(..f[min(s, i - (t + 1))])
 * k >= 2。枚举当前产品第一次做梦的时间j,预处理j..i之间0..k-2次发呆的方案数。

A. Alarm Clock

枚举所有时间即可。

B. Buffcraft

枚举在第一类中选多少个,然后贪心。

C. Combinator Expression

D. Digits

统计1到一个充分大的数(1e6就够了)间的全部数字再处理询问。

E. Expression

F. Fragmentation

G. Grave

枚举上下左右即可。

H. Hiking in the Hills

注意到必定存在除首尾两端之外均在三角形边界上的路径。将所有顶点、起点和终点视为结点,三角形边作为边,起点和终点与所在三角形顶点间也连边。求一次最短路。

I. Instruction

在最后时刻才改变开关方向,这样可以依序处理每辆列车所需的操作,到最后才按时间排序。

J. Joy of Flight

先计算出k秒间风速所造成的偏移量之和,然后再从起点的偏移位置移动到终点。

K. Kebab House

用f[i]表示i时间最后一次做梦对应的方案数,s为i时间之前最后一个产品制作结束的时间。设i所属产品容许做梦次数为k。

  • k == 0。f[i] = 0。
  • k == 1。f[i] = sum(..f[min(s, i - (t + 1))])
  • k >= 2。枚举当前产品第一次做梦的时间j,预处理j..i之间0..k-2次发呆的方案数。