【2016CCCC团体程序设计天梯赛决赛】总集吐槽篇

天梯赛题目太多而且大多数都没什么难度所以就不一一拆出来说了。
干脆就搞成一篇总集篇好了。
说是侃题解但其实就是吐槽而已。
模拟赛初赛决赛都是一个题型是什么鬼啊Orz
在做决赛的时候感觉完全就是在做模拟赛三代目。
全场手速场,啊也就这种手速场我才能有点优势吧。
(虽然不会盲打的我手速buff还是加不够但是现场飚键盘的时候还是贼爽233)
中途还停电了是什么鬼。。
果然鄙校来承办广州赛区还是有点吃力啊(笑
题目太多就不一一贴代码了,只做一些简单的吐槽。

题目集链接
决赛的L1-1至L1-8对应练习集的L1-025至L1-032
决赛的L2-1至L2-4对应练习集的L2-013至L2-016
决赛的L3-1至L3-3对应练习集的L3-010至L3-012

L1-1 读两个字符串然后判断里面有没有非数字字符,如果有的话当然就不符合要求。然后再对符合要求的转换成int型再判断是否在题目所给的范围内,如果超出范围同样不符合要求。最后加起来,符合要求的就输出,不符合要求的就给个问号。
L1-2 简单输出。wodema这种题存在的意义到底是什么= =
L1-3 先用一个数组装下所有出现过的数字,然后降序排序,最后对原来的电话号码挨个找index就行。注意输出格式。
L1-4 开根号判断,或者筛子,任君选择。但显然前者比较好写。
L1-5 按他说的转换就行了。注意保留小数点后1位。
L1-6 开一个vis数组记录是否已被配对,然后从前往后遍历,对于每一个遍历到的没有配对过的学生,从后往前找没有配对过的异性,然后配对输出即可。
L1-7 第五题的进阶版。但其实也是按他说的判断就行。其实应该是没有浮点数误差的,如果发现有误差了的话可以回过头看看自己是不是有什么变量定义成int了(别问我怎么知道的,胃疼)。
L1-8 分两种情况讨论 原字符串比最终需要生成的字符串短的话就剪掉前面的多余的部分,长的话就往前填充。

L2-1 对于每次失去城市dfs判断连通块的数量是否有变化即可。注意失去的城市本身就是孤立的话那连通块本身就会少了一个的情况就行了。最后再扫一遍看看是不是全部城市都没了。
L2-2 讲道理其实就是nlogn求最长递增子序列而已。题目的原意是求原序列拆成递减子序列最少拆成多少个,但其实这个跟最长递增子序列的长度是等效的。然而比赛的时候忘了nlogn求LIS的算法,最后只能写个n^2的LIS摸了几分。So sad.
L2-3 放在L2但其实就是L1难度。对每个人进行单独处理,对于每个人的分数,先进行排序,然后去掉最前面的分数和最后面的分数,然后再计算平均分,最后对所有的平均分进行一次排序并统计就行了。
L2-4 这题的标题简直深得我心23333。只需对要判断的两个人判断性别以及dfs其五代之内是否有重复ID就行。需要注意的是,当录入信息的时候,对于其父母同样也要更新这个ID的性别信息。

L3-1 用一个大小为2^20的堆来模拟这颗二叉搜索树就行了。用堆的话层次遍历也比较方便。
L3-2 惯例的最短路问题。题意很显然已经告诉你要写个三关键字的可重复最短路并且需要记录最短路径了。那就照着他说的写就可以了。由于需要记录第一关键字与最短路径相同的路径数所以当算法运行到找到最短路径的时候不应该立刻停止而是要继续下去直到迭代到的路径的第一关键字发生变化为止。由于满足条件的最短路径数有可能会以不同的方式通过相同的点所以不应该判断其是否有重复遍历节点的情况,而是要让它这样重复遍历下去(可能题目数据比较小不然这样真的得爆炸)。
L3-3 惯例GG的题目。不过初步的想法是,要找出满足条件的线段其实就等于要找出满足条件的直线,如果找到满足条件的直线的话那只需截取“足够长”的线段就行了。那么关于该直线,就可以考虑设其为y=kx+b(斜率不可能不存在,因为它需要切割竖直线)。那么对于任意一条需要切割的竖直线段,都可以看成是对该直线方程中的k和b的约束条件,于是遍历一遍之后就有了一系列的约束条件。那么就跟解线性规划问题一样划出k和b的可行域然后取适当的值就行了。嘛毕竟是初步思路还没想好怎么实现以及其正确性,大神们看着开心就行Orz

完毕,接下来将近一年可以不用碰这样的题目了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值