2016-S04-team1

从 Trac 迁移的文章

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

原文章内容如下:

比赛链接: http://10.71.10.90/sfiction/ranklist/2016_CCPC_Final_Ningbo/ranklist.htm

== 流水账 ==

[http://www.cc98.org/dispbbs.asp?boardID=329&ID=4670121  2016 CCPC Final小结 by sfiction @Siunaus]

== 总结 ==

== 题解 ==


AJL略去不表。

=== B. Wash [sfiction] ===

先考虑前半问题,可以用一个堆维护每个洗衣机再加一件衣服的结束时间。取其中最小值即可。又注意到后半部分可以令所有烘干机都恰好在最后结束任务,容易发现两部分是对称的。因此做两遍,然后倒序相加取最大值即可。O(Llogn)。

=== D. Mr.Panda and Survey [sfiction] ===

首先将Tom一般化,将i-R也加入边。保留u<=v的单向边。从小到大枚举u,检查所有对应v。用vis[v]表示v是否已被访问,如果已被访问说明至少存在一个比u更高级别的人,u不可能成为v的leader。如果未被访问,则u有可能成为v的leader。当u可能成为的leader数量大于c[u]时,超出的部分(选择哪些v并不影响结果)的leader应该另有其人,可以是一个stranger,也可以是排名比u更高的人,因此可以作为一种待定ranklist。当u可能成为的leader数量小于c[u]时,缺少的部分可以从满足限制的待定ranklist中获得,也可以靠stranger获得。上述过程中u也可能是自己的leader,因此需要加入(u,u)的边。O(n+m)。

=== F. Periodical Cicadas [sfiction] ===

1-40的LCM在long long范围内,合并同余式可以用CRT,单次合并复杂度为O(logn)。用ST表维护可以做到O(n^2^log^2^nlogV+QlogV)。

=== G. Pandaland [JTJL && Akalm] ===

平面图上的最小环问题。正解是转化对偶图+全局最小割解决。赛场上我们直接枚举起点和终点并禁用连接他们的边,然后dij+优先队列通过。要在更新到终点的时候立刻跳出结束,否则会T。

=== H. Engineer Assignment [Akalm] ===

f[i][mask]表示当前已处理i个项目,工程师使用状况为mask的最多通过项目数。暴力枚举工程师使用集合即可。

=== I. Mr.Panda and Crystal [sfiction] ===

考虑求出所有物品的最小产生代价,然后做一遍背包。因为用一个物品A去产生另一个物品B,代价一定不会更低,因此可以用类似Dijkstra的方法,每次取一个代价最小的物品根据公式去更新其他物品。代价相同时选哪个都无所谓。O(n(n+K)+nm)。

比赛链接: http://10.71.10.90/sfiction/ranklist/2016_CCPC_Final_Ningbo/ranklist.htm

流水账

2016 CCPC Final小结 by sfiction @Siunaus

总结

题解

AJL略去不表。

B. Wash [sfiction]

先考虑前半问题,可以用一个堆维护每个洗衣机再加一件衣服的结束时间。取其中最小值即可。又注意到后半部分可以令所有烘干机都恰好在最后结束任务,容易发现两部分是对称的。因此做两遍,然后倒序相加取最大值即可。O(Llogn)。

D. Mr.Panda and Survey [sfiction]

首先将Tom一般化,将i-R也加入边。保留u<=v的单向边。从小到大枚举u,检查所有对应v。用vis[v]表示v是否已被访问,如果已被访问说明至少存在一个比u更高级别的人,u不可能成为v的leader。如果未被访问,则u有可能成为v的leader。当u可能成为的leader数量大于c[u]时,超出的部分(选择哪些v并不影响结果)的leader应该另有其人,可以是一个stranger,也可以是排名比u更高的人,因此可以作为一种待定ranklist。当u可能成为的leader数量小于c[u]时,缺少的部分可以从满足限制的待定ranklist中获得,也可以靠stranger获得。上述过程中u也可能是自己的leader,因此需要加入(u,u)的边。O(n+m)。

F. Periodical Cicadas [sfiction]

1-40的LCM在long long范围内,合并同余式可以用CRT,单次合并复杂度为O(logn)。用ST表维护可以做到O(n2log2nlogV+QlogV)。

G. Pandaland [JTJL && Akalm]

平面图上的最小环问题。正解是转化对偶图+全局最小割解决。赛场上我们直接枚举起点和终点并禁用连接他们的边,然后dij+优先队列通过。要在更新到终点的时候立刻跳出结束,否则会T。

H. Engineer Assignment [Akalm]

f[i][mask]表示当前已处理i个项目,工程师使用状况为mask的最多通过项目数。暴力枚举工程师使用集合即可。

I. Mr.Panda and Crystal [sfiction]

考虑求出所有物品的最小产生代价,然后做一遍背包。因为用一个物品A去产生另一个物品B,代价一定不会更低,因此可以用类似Dijkstra的方法,每次取一个代价最小的物品根据公式去更新其他物品。代价相同时选哪个都无所谓。O(n(n+K)+nm)。