欢迎使用CSDN-markdown编辑器

来源:互联网 发布:dns使用的端口号为 编辑:程序博客网 时间:2024/06/15 13:05

ICPC沈阳区域赛比赛报告

杜逸闲

比赛记录(个人视角)

因为比赛一共有13题,按照平时训练的惯例我从E题开始往后看。快速看完EFGH的题面后,发下E和H是博弈题,F是数学题,G题题意不太好懂。于是决定先写出F题的式子化简后同ws讨论。

待ws过了签到题以后,跟他讨论了一会儿F题,无果。抬头看了一眼榜后开始看L题,想到了一个DP算法。

将算法跟ws讨论后发现了一个正确的性质,随后A掉L题。

大约一小时,左边的队伍拿了C题一血,M题也有几支队伍过。

接下来两小时,不断在C,F,M之间徘徊,F和M无想法,C题有想法但复杂度无法过。

三个小时的时候,F题已经被无数队过,但仍未推出式子。对答案打表后发现极其简单的递推式,随后过了F。

读懂G题题意后发现是个字符串题。最初用考虑转化成图+后缀自动机,但代码难度太大。跟ws讨论后发现改良的后缀数组可以做,随后过了G题。

四个小时时M题已经被A穿了,然而我还是没推出M题的式子。

最后决定开始写C题——计算几何题。最终没有写完。

题解

G

题目大意

有N个点,从0开始标号。i点唯一的一条出边连向(i * i + 1) % N. 每个点上有一个数字。从任意点出发走N步(由于每个点有且仅有一条出边,则一定有唯一的路径走N步),可以得到一个N位的数字。求最大的数字。

简单题解

题目的实质是对N个字符串进行排序。观察题意,这N个字符串有很大一部分是重合的,每个字符串的所有后缀,都是某个字符串的前缀。这很容易让我们联想到后缀排序。事实上,在倍增后缀排序算法中字符S[i]的下一个字符是字符S[i + 1],而在本题条件下,每个字符仍然有唯一确定的下一个字符。如果熟悉倍增后缀排序算法则很快发现,改良部分细节后即可以实现后缀排序。

据说暴力就可以过?难怪过的队还挺多的

L

题目大意

给你一棵N个点的树,以及K个颜色。设U[i]为使所有颜色为i的点连通的最小的边集。一个染色方案的价值为所有U[i]的交集的大小。求价值最大的染色方案的价值。

简要题解

朴素的想法是一个DP,然而暴力打表出答案即可发现:若一条边两边的点数均大于K,则这条边在答案中。

总结

这是我第一次参加ACM竞赛,可以说是乡下人第一次进城。头一次看到规模如此庞大的场地,紧张还是不由自主的蔓延到我身体的每个角落。比赛过程中我也失去了平日里那份从容,代码能力仿佛退化到了初中,就连打表的时候都“石乐志”一般没开longlong浪费了很多时间,最终成绩也不尽人意。上台领奖时,我几乎是强忍着泪水挤出一丝可怜的苦笑,面对镜头的十几秒,成为了我记忆中无法抹去的一个世纪。

感谢我的队友们,同时也还有举手投足间都给予我安慰和鼓励的学长们,很快我也恢复了活蹦乱跳的状态。经过讨论后,我们也分析出了自己的问题:对一个角度会钻很久很深,陷进去拔不出来,导致很多题目可以很简单地打表,暴力或随机解决,却一直没有往那方面想——如这次的F题和M题(最后也没有做出来)。

我相信我们队的硬实力,相信经过总结,调整和针对训练,我们能克服自己的弱点,拥有更稳定的发挥。来年ICPC再见!

原创粉丝点击