首页 > 其他 > 详细

USACO 2020 February Contest, Platinum

时间:2020-04-20 13:21:24      阅读:82      评论:0      收藏:0      [点我收藏+]

Delegation

二分答案,在递归时考虑保留儿子里尽可能长的一条路径,这个可以继续二分。

https://ideone.com/q2mbJR

Equilateral Triangles

对于每个等边三角形,考虑在它的“左上角”计数(如果不存在的话可以通过多次旋转得到)。

考虑三个点 \(A,B,C\) 形成的等边三角形。把 \(A(a_0,a_1)\) 作为左上角,枚举 \((x,y)=(b_0-a_0,b_1-a_1)(0<x \le y)\),那么 \(C\) 可以确定为 \((b_0+(x+y)/2,b_1-(x+y)/2)\)

枚举 \(a_0,x,y\),用 std::bitset 优化即可,复杂度 \(O(N^4)\)

此外,还可以枚举 \(A\)\(B\) 所在的对角线,然后注意到每次移动 \(A\) 一步时对应的 \((B,C)\) 对几乎没有改变,然后就可以 \(O(N^3)\) 了。

\(O(N^3)\)https://ideone.com/FMbx6k

\(O(N^4)\)https://ideone.com/VRPnGq

Help Yourself

经典的第二类斯特林数应用。

\(f(k)\) 所有线段集合内选取一个大小为 \(k\) 的连通块子集的方案数,那么答案为

\[\sum_{k=0}^{K} f(k)k!S(K,k) \]

用线段树优化一下 DP。

https://ideone.com/4s6npw

USACO 2020 February Contest, Platinum

原文:https://www.cnblogs.com/iefnah06/p/12736904.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!