NY0602考后总结

这次考试暴露了很多问题!

先一题一题来说:

第一题“前缀第 K 大” 

        先说正解:维护一个长度已知小顶堆或set容器,输出就行。

        本来特别简单的一道题,但我想复杂了,在set末尾维护了一个已知长度的块,最终导致超时。

        这题暴露的问题:

        主要问题就是对堆的生疏,本来就很少做过堆的题,以为非常简单,但用堆的题一般都隐藏很深,所以要多练这种题,加强对学过的STL容器的敏感。

第二题“三原色”:

        正解:这题主要考思维,用双指针过一遍整个区间,分类讨论区间中出现的数,过程中统计答案,时间复杂度只有O(n)。

        这题主考思维,但我当时直接一股脑打了个暴力,最后超时。

        这题暴露的问题:

        对于这种主考思维的题,代码能力并不重要,这种题重在分析,对于这类题目的方法就只有多练多分析。这道题也同时暴露了我另一个问题:就是每次拿到一道题就开始一股脑打暴力,打完之后的代码又不知道思路对不对,就很难在分析下去,所以以后拿到题目应先分析,先大致确定知识点再写。

第三题“线段分组”:

        正解:这题主考贪心的线段覆盖问题,和NKOJ P5227摄像头3差不多,先把满足是一组的线段都合为一组,再跑一个模板求出最多不重叠区间,每个区间有两个线段一组,所以再用总线段n减答案 * 2,就是要删去的线段数量。

        考试时做这道题的时候已经很晚了,所以随便写了个乱代码交了,就不细说了。

        问题:

        这道题就是一个妥妥的贪心了,但我第一眼根本没看出来,对区间的问题无疑就学了几种,所以对这种有“最多”“最少”的区间问题就应该想到贪心,所以总结下来就是贪心练得太少了,对题目根本不熟悉。

第四题“智者取数”:

        正解:用已知的数组和范围求出它的补集,然后枚举一边,另一边用O(n)的check函数做二分求出来,两边相减+1在存入答案。

        考试时这道题根本看不出开是什么知识点,就是到考试结束都没看出来这是二分。

        问题:

        二分这个魔鬼,当时学的时候就没怎么学好二分答案,对于这种需要转换的题就更不知道怎么做了。

总结一下:

两个点简单明了:练习、分析!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值