FFF Warm Up Contest 3 - Chengdu 2011 [iSea]

来源:互联网 发布:淘宝网页版登录 编辑:程序博客网 时间:2024/06/04 19:46

Board: http://acm.hust.edu.cn:8080/judge/contest/view.action?cid=6330#rank


第三周,做一套以前看过的题,虽然大致情况了解,想要有所收获,或者突破,在既有的束缚面前,似乎更难。

这场比赛现场赛最多是7题,比赛后我和哑熊YY了一下,让OL去做这套题,真是再适合不过了,8题似乎无压力,运气好,C和J也可以出一题。

这回真的一题一题去写,发现其实现实还是比想象稍微困难一点的。


【第一档】


B 小学智力题,切蛋糕。二分思想有了就好了。

H 这个题印象很深刻,所以昨天上来就写了。当时看题想了一会DP没想出,画了画图恍然大悟了。最优的情况是可以构造出来的。

I 模拟,用用STL还是很方便的。


【第二档】


A 这是道不错的博弈,成都前,hzj在学博弈,我们讨论了不少题,我给他的意见是,现在比赛一般不会有那么裸的SG函数的,一般博弈题都是DP。

结果成都真有一道酷似SG的博弈,我一想,不好,这下身败名裂了。就开始想这个题,没想出来(主要也是希望留着作比赛)。

很明显可以发现,这个题目的关键在于个数为1的堆对决策的影响。

没有这样的堆时,步数是固定的。必败者是不能通过移走某堆来逆转必败态的。

考虑含有1的堆时。为了简化思考,把题目的数拆分为两种:全为1的,不全为1的。

对于全为1的,不难分析出必败态:堆数%3 = 0。

不全为1时,如果1的堆数为偶,则对结果不会影响:后手和先手做一样类似的操作。

1的堆数为奇,如果取走后是必败态,就取走,否则合并到后面去。是先手必胜的。

这样写之后,你会发现样例过不了,没关系,这就对了。

这是一种特殊的情况,就是不全为1可以往全为1直接转换,特判掉。

特判这一个还有一点点不够,因为它会衍生出另一种必败态。再特判掉。DONE。

D 这个题状态压缩不难想,主要在于转移,其实也蛮常见了 = =

加菲写的,可能要注意一点细节。

E 放第二档有点太高了,其实知道每一轮Alice的选择只有两种后,就是一个再裸不过的2-SAT了。


【第三档】


F Harbin 2009 原题重现,所幸的是,那一场,我们三个都参加了,也都做过这道题。

不同的是,那个时候,我貌似对计算几何处于无知状态。一条线穿起最多圆,好像很难啊,于是最后差不多2个小时,都在一边玩...

这回加菲说的思路大致还是理解的,枚举一个圆,作为主要处理对象,去掉包含与被包含的,其他的圆都有1-2条公切线,这些公切线的端点可以用来表示一个圆的进出时间,即一些区间,问题就转化为那个经典的环形区间最多覆盖次数。N^2 logN。

加菲的代码写的还是很精练的,赞一个。

G 这个题其实昭示了我们的一个短板,字符串问题,尤其是我。

常年用RK水题,自动机只套模板,后缀数组不会,表示有点汗颜。该学一下了。

不过貌似我们还是用RK水了,没T,WA了。方法是我很久以前看某博客上写的:

记录出现过的字符串的长度,枚举字符串。

据说也不是很水,至少我觉得非常十分极其特别相当水。


【第四档】


C 这类题其实很常见,ZOJ某次月赛有两道Great Wall的题,一道最小割,一道是可以围出多个多边形,通过封闭关系来DP。

这个题的关键在于不能自交,这个信息需要记录起连通关系,即插头DP。

另一个一直想学没学的东西,哎。

J 经过昨晚WA到死的惨痛,今天来公司我把代码打了一份仔细读了一下,发现一个,只有一个很细微的错误,改了过了。

这个题的算法难度绝对不算什么第四档,而trick程度和代码复杂细碎度绝对是绰绰有余了。

算法大致就是,算出前面可以推算出来的,剩下若干个不确定Leg[i]和Num[i]的。

但知道sigma(num[i]) 与 sigma(num[i] * leg[i]),以及每个leg都不相同,并大于K。

1个可以直接算,2个可以枚举。

3个以上嘛,构造一下多解,就会发现没有多解的情况很少。

然后就是很繁琐很头疼的bug处理阶段,慢慢改吧。这才是这个题的乐趣所在...


总而言之,这套题确实不错,就是陈题多了点,但可以理解。

没搞出的题目也是能力不足知识没学好,没办法,这个得补,YY不得。


原创粉丝点击