FZU2011年3月月赛小结

来源:互联网 发布:火箭回收知乎 编辑:程序博客网 时间:2024/06/11 07:43

 

FZU三月月赛小结

【小结】

写了DEH,罚时很多,权当惨痛教训了。

B题犯了很多很二的错误,很多细节没有考虑周全最终也没有过。

F的式子都已经推出来了,结果时间都拿去调试B了,最后十分钟草草写了一下WA了。BF都挺可惜的。

 

【Update 2011年3月25日】

周一和今天把余下的题写了一下。

B的问题是做DP的时候把已经初始化的边界又做了一遍,更新的时候用到了一些非法的数据,所以挂了。当时如果多花点时间memset也可以消除这个错误的影响。

F的问题参见了师兄的报告,下面分析中再提。

最后一题看了一下出题人的BLOG,貌似是快速傅立叶变换,就先不写了。

 

【题解】

重新整理了一下,按照题目编号。

A:

挺水的一道题。dfs一下五个加权系数(5个for的话变成复杂度几乎没有了),只要注意五个系数相加等于一,然后分别计算即可。

比较担心精度的问题,把加权系数都*10换成了整数。

WA了几次,太急着太写完了囧,这样很不好。

 

 

B:

自顶向下和自底向上DP两次,题意还是比较清晰的。

一个非常需要注意的问题就是有些三角形不能作为正三角形的顶端,有些三角形不能作为倒三角形的顶端,比赛的时候没注意到这一点。还有需要注意的是DP边界的初始化和状态转移时的边界。

太久没有写DP了,对这些容易导致WA的地方太不敏感了。还有这一次在正三角倒三角的问题上太纠结了,记忆深刻,以后肯定不会再错了。

 

 

C:

看了出题人的题解,还是感觉这个hash的算法比较需要人品。不过写起来已经挺复杂了,还是写了一下。标准的解法应该是后缀数组,以后补上。

解题思路:

http://hi.baidu.com/aekdycoin/blog/item/8f91ac384b880ce63a87ce86.html

 

 

 

D:

题目说自己很Short,点进去看了看确实比较短,想了一下也不复杂,经典问题的变形,就直接写了。

RE了一次,开了1000000int的数组。

TLE了一次,short不会用scanf读,用了cin

WA了好多次,都是细节的问题。

其中的RE,TLE和很多次WA都是可以避免的,太急着交了,都没有考虑清楚。教训是cincout还是尽量不要用的好,写题前应该大致估算一下内存是不是够避免RE甚至推倒重写。很多细节还是应该查一查代码再确认一下再交,慢一些AC总是比罚时好。

 

 

 

E:

         题意也很清晰,从2010-12-21往前数n天,输出。WA了几次,有闰年判断得乱七八糟的原因,还有输出格式的原因(不是严格的yyyy-mm-dd位数,用了%4d%2d这样补空格的),都是很二的错误。

 


F:

公式推推,其实应该算数学题了。

不论谁赢,其实总方法数都是一样的,不用考虑是谁。枚举赢者的票数i(i>n/2),则其他的r=(n-i)张票分到k=(n-1)个人处,可推得方法数为C(r+k-1, k-1)=C(r+k-1, r)  (可以用高中传说的“隔板法”推出)

如果没有人赢,方式=所有人投票的总方式数 - n*某人赢的总方法数。

两个教训写在代码的注释里了。

H:

H题是在写D的时候发现很快就有人过了,在DREWA之后看了一些。给出经纬度求两地的距离。给出的位置先化成直角坐标系,再求两点直线距离,最后根据两地的张角求弧长。于是成了唯一一道1Y的题。代码加了一点注释。