没有题解好虚啊。。。剩下的题要么不会,要么做起来太慢感觉没意义,弃了吧。
Algorithmic Engagements 2010
Tasks
Rectangles | (Round 0) | (10/10) |
Orienteering [B] | (Round 1) | (10/10) |
Mushrooms [B] | (Round 2) | (10/10) |
Coins [A] | (Round 2) | (10/10) |
Fragments [A] | (Round 3) | (10/10) |
Squared Words [B] | (Round 3) | (10/10) |
Evacuation [A] | (Round 4) | (10/10) |
Map [B] | (Round 4) | (10/10) |
The Goat [A] | (Round 5) | (0/10) |
Map 2 [B] | (Round 5) | (10/10) |
Termites [A] | (Round 5) | (10/10) |
Byties Display [B] | (Round 5) | (10/10) |
Byton Tree [B] | (Round 6) | (10/10) |
Firm [B] | (Round 6) | (10/10) |
Planning the Roadworks [A] | (Round 6) | (0/10) |
Riddle [A] | (Round 6) | (0/10) |
Variable Subsequences | (Final round - practice session) | (10/10) |
Rectangles 2 | (Final round - practice session) | (10/10) |
Sweets | (Final round) | (10/10) |
Acyclic Decomposition | (Final round) | (10/10) |
Divisors | (Final round) | (10/10) |
Byteball Match | (Final round) | (10/10) |
Army Training | (Final round) | (10/10) |
Blindfold Nim | (Final round) | (10/10) |
Termites 2 | (Final round) | (10/10) |
Orienteering [B] 破环成链后倍长,然后统计每个点向前最多延伸多少。
Mushrooms [B] 显然他一定是走到一个点i,然后在i-1和i之间来回扭脖。注意在原点和1之间来回扭脖的情况。
Coins [A] 令'R'=k,'O'=-1,然后统计最长的子串使和为0的,hash+扫描即可。
Fragments [A] 对不同的长度分别处理,求出断点以及断点上的增值即可,断点只能为10^k或者某一段的数字。注意略卡空间。
Squared Words [B] 大力枚举断点跑lcs,加一些剪枝O(N^3)过了。。
Evacuation [A] 对于(i,j),如果1和i且j和n连则至少断(1,i)(i,j)(j,n)中的一个。(1,i),(i,n)同理,注意(1,n)的情况。
Map [B] 排序后统计比某个点x小的y的最小最大值;反过来再求一遍即可。
Map 2 [B] 枚举x坐标,则y坐标的范围一定。在相邻x坐标之间的一起统计即可。
Termites [A] 最优决策下不会有个人选相邻的点(否则会被另一个人破坏掉?),然后如果x比两侧都大就用两侧-它替换。
Byties Display [B] 显然越大的越多越好。从9~0枚举,然后二分最多有几个跑网络流。
Byton Tree [B] dp。注意一个点剪掉的时间要比它的子树中其余点要晚,然后求出最优决策的时间段即可。
Firm [B] 离根节点的距离相当于深度。按深度离线,求dfs序然后按时间加入即可。
Variable Subsequences dp。dp[i]的前面一个可以是1~i-1,然后减去和它一样的即可。维护两个前缀和。
Rectangles 2 枚举长,宽是一个范围内的1~k的前缀和。
Sweets 我只会sb做法。首先分成两堆,三个人差分表示成(i,j),然后在另一堆找最小的x+y使x+i>=0且y+j>=0.
Acyclic Decomposition 如果不可以一组,那么所有(i,j)且i<j的分成一组即可。
Divisors 把1和n带进去看是否一样。
Byteball Match 显然每个球队都可以刷净胜球,然后就是网络流经典问题了。
Army Training 用射线法,预处理统计每条(i,j)右侧有多少点,最后加起来在减去反过来右侧的点,这样每个点算了两遍要/2。注意顶点的问题。
Blindfold Nim 打表发现每次都是选最大的-1。实际上如果你不选那么后手就可以这么走不会更差。
Termites 2 挺不错的一道思维题。由于是一棵树,所以一个连通块一定恰好一个点没有被选。对于每个人,维护一个数组表示在最优策略下他能否保住某一个点,并维护一个链表。加入边的时候讨论一下。
QAQ水平太差了。
by lych
2016.1.1