NOIP2015总结

考场情况:
day1的题目考场上感觉前两题很水。
第一题敲了模拟,然后写数据生成器和检验程序对拍,大样例也过了于是就跳过了。考场上感觉并不是很虚,因为输入是1到39的整数,很有限,然后每个数据都在考场上的机子过了。
第二题一看就知道是一个找有向图上的最小环问题,我没注意到只有n个点n条边,每个联通块只会有一个环,我就写了个BFS,速度还是很快的,拍了蛮久。我写的DFS对拍程序却比BFS慢很多,可能是数据生成器的问题吧。
我做第三题的时候还有两个小时,这题看起来很工业,然后就脑残地写状压dp,然后顺子不会处理,此时代码已经巨长了,就骗30分算了。
day2的题目比day1难多了。
第一题是一眼二分答案的题,程序写完之后依旧是对拍,然而老是出错,被迫改了许多次检验函数,九点40多才调出来,而且还是抱着试一试的心态改了一下检验方法结果就拍上了,先skip掉。
第二题感觉是dp,然后就是各种手玩样例找规律列dp方程,快11点的时候才想出一个比较复杂的自己认为是对的的dp方程,没时间了。
想出第二题的(假)方程后,就马上看第三题准备打暴力过特殊数据,于是就打了小数据和链的暴力,转头打第二题dp,但显然是调不完的,无奈只好拿了10分的傻逼分。
估分:375
昨天把程序发下来了, 怀着期待的心情上UOJ测,首先交了一道自以为最有把握的magic,爆40,当场就被吓尿,这基本上已经没希望了,检查代码之后发现,是数组开小了,考场上对拍居然都能过,需要39^2的空间我只开了45都能过?这。。。(还是怪我自己没有养成良好的习惯)
day1第二题和day2第一题第二题都拿到了期望的分数。然而斗地主这题TLE!检查发现输入打错了。这里掉了30分,然后就是第二天第三题一条链的WA了,掉15分,加上第一题掉的60分一共是105分,与一等奖无缘。
成绩出来后是290分,算是一个很差的成绩了,屈哥考前多次强调该拿的分一定要拿到,这次就是因为一些“非智力因素”而导致丢分。考完后批评了一顿,我也能虚心接受,给家里打了个电话,家里人也是说我平时太毛躁,屈哥也是因为恨铁不成钢才批评我的。
题解:
day1
T1 傻逼模拟题,题面就是题解;
T2 找最小环,由于一个点只有一条出边,所以一个强连通分量里面至多只有一个环,BFS、DFS均可。
T3 经过简单的状态表示的尝试以后发现顺子这个东西貌似不好搞,又因为顺子最多出4次,所以我们DFS出顺子的出法。顺子已经没了,剩下的牌的点数 大小已经和答案无关了,把状态抽象成 dp[i][j][k][l][m] 表示手上还有 i 张单牌,j对对子, k 张三张,l个炸弹, m 个王牌的打完的最小值(不打顺子,因为已经搜过了),傻逼转移即可。
day2
T1显然是二分答案,判定的话我写得丑,好方法应该是考虑哪些石头应该拿进来(from 曹力升),而我写的是哪些应该撤掉,并没有上面那个好写,以后虽然算法可以过也要考虑更好实现的算法。
T2设f[i][j][k]表示A串匹配到 i ,i必须拿,B串匹配到 j ,分了k份的答案。那么
f[i][j][k]=(w=0i1f[w][j][k1])×(A[i]==B[j])+f[i1][j1][k]
第一个和式表示我把A[i]单独作一块,第二个和式是把A[i]合并到以前算过的方案中。
T3也是一个求最大值最小的题。考虑二分答案的检验,也就是说我们要在路程大于二分的答案的这些路径中求交集,然后取交集最大的边,最长边减去这条边权值之后检验是否小于等于答案即可。那么我们如何在 O(n) 的时间内求出树上路径的交集呢?如果是区间交集问题我们可以通过把区间首打1,尾打-1,做后缀和即可。类比到树上,我们可以把起点和终点打1,LCA打-2的标记,在树上求后缀和(回溯时),然后如果点的和值等于路径数量,那么这个点连向父亲的边便在交集中。
原因总结:
子曰:“以约失之者,鲜矣。”意思是说,通过约束自己但却失败了的人,是很少的。这次联赛失败最重要的原因,最主要的原因一定是平时的学习习惯不正确。我最不正确的学习习惯就是爱看题解,错失许多锻炼思维的好机会。经过这次联赛集训,我也开始着手总结一些做题的技巧(dp的技巧),但是由于题量太少,所以没有把这些思想深入内心。后阶段的工作重心是刷USACO和讲课,尽量不看题解,相信自己能做到。考试的时候一定要看清楚输入输出和数组大小,打暴力的正确性一定要靠平时的习惯保证,多吸取别人想法中的闪光点。
再次强调一下,平时应该多约束自己,不要偷懒。这次联赛我越是简单的程序越拿不到分,楼下全都做对了的magic我却只有60,也真是应该感到羞愧。
子曰:“君子不重则不威,学则不固。主忠信,无友不如己者,过则勿惮改。”要以庄重的态度对待学习,不管是文化还是竞赛,否则学得的知识就会不牢固。一定要勤勤恳恳的完成自己的计划,多向他人学习,自己犯了错不要害怕改正。在讲课的时候不要死气沉沉的向一堵墙一样,不懂不要装懂,一定要搞懂,学不是为老师学,学习是为自己!
反思完自己后,就应该多去看看别人。张千帆应该是我们全信息组的榜样吧,学习扎实,认真刻苦。每一个算法都尽量搞懂,每一道布置的练习题基本上也做了,讲课时也能听懂,平时改题也是最快的。他之所以这么厉害,大概是因为他用一条原则约束自己——写题前不看题解。曹力升经常率直的挑出我学习方法中的一些坏习惯,我都因为种种不应该的借口而不去改正,他则是经常独立思考实现程序。啊,差距就是这么产生的。
坚持下去。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值