2013渣打编程马拉松赛天津初赛总结

天津初赛是在天津大学里举办的,从天大大门一直到实验室那栋楼的路上的每一个路口,都要一个穿着渣打T-Shirt的漂亮妹子举着渣打编程马拉松的牌子,感觉自己不是屌丝了。来到实验楼一楼大厅,展示自己的二维码,现场打印出来一张自己姓名的贴纸,马上给贴在胸牌上,还给一袋子,装着一本渣打宣讲和一件渣打编程马拉松的短袖,瞬间高端了。


进到实验室里,看到手头资料,比赛时间是上午9点到下午5点,中间有茶歇,午餐时麦当劳,茶歇有罐装可乐雪碧和巧克力,很高级。又发现比赛时获取题目、数据,以及上传源代码、数据和执行指令,都要用到8uftp云端服务器或者远程登陆亚马逊服务器端来操作,自己又屌丝了=。=


题目内容屏蔽!

比赛题目背景又臭又长,是北京地铁系统,题目一共有四个。我和TJUT_Shadow一队,一看题,觉得第一题很简单可做,就是把外部字符串文件读进来,排序,输出最大值的相关信息。由于Shadow不会敲读取外部文件的代码,所以我来敲,Shadow看第二题。敲了一个小时敲完了,先跑样例数据,崩了,检查发现两个循环套错位置了,改之,过了;再跑200MB的TXT文档,二百万条记录的大数据,又崩了,检查一下,觉得没什么错,Shadow说,会不会是一次太多了,我们一点一点增加数据吧,结果加了8次,终于从200加到2000000了,最后过了,开心。但是第一题花了4个小时,自我反省。


第二题是地铁换乘问题,二维矩阵建混合图,非环线的两点间有两个方向的边;运用链表保存所有进站的人的信息,当出现出站的人的时候,在当前链表中查找出站人信息,确定进站点和出站点。BFS从得到的出站人的进站点开始进行广搜,如果搜到的节点有两个以上去向(因为不存在环线与环线交叉,如果存在则应该对有两个去向的进行判断)则认为是可换乘站,如果此站为西直门则对所有换乘的线路进行标记,之后根据去向的不同对时间进行增加(换乘的加换乘时间)。直到把所有的节点查找完(先搜到的不一定时间短),之后找到最短的并看其是否在西直门换乘,如果换成人数加1 。一开始我们在想最短路,Dij又不行,因为有环而且不是单源,Floyd也感觉答非所问,最后才想到BFS。想到时很兴奋,感觉重见光明了,但是敲建图的代码时,发现头大了,给出的数据里面除了1号线2号线之外,还有房山线八通线等,在纠结怎样把中文读成数字,后来我就说直接存中文字符就行了,反正后面也只是匹配而已,想通了,敲之。但是,时间不够了。


最后我们就交了第一题的源代码,数据和执行指令,以及第二题写了一半的代码。结束了这次渣打编程马拉松比赛。感觉自己的基础能力还要加强,要熟练freopen和qsort,x_white那一队第一题20分钟出来了,我们用了4个小时。


比赛结束后很屌丝地签了一个名,被采了一个访,走了。

你可能感兴趣的:(2013渣打编程马拉松赛天津初赛总结)