CSPJ2023简析

一、小苹果

        这个题是说每次从第一个每隔两个拿一个苹果,问多少次会把苹果拿没,第n个苹果第几次拿走。

        看一眼数据规模在1e9上,所以如果第一时间想到链表啥的快算了吧。很明显的,每3个苹果拿走1个,二十来次应该能拿完所有苹果,第二个输出在while(n)判定n与3的关系可以,也可以直接根据n%3的具体情况直接计算。

二、公路

        这个题是说公路上有若干个加油站都有无限多的油,你的车也有无限大的油箱,问从头跑到尾最少花费多少油钱。

        很明显的贪心:在当前位置的油够跑到下一个更低价格加油站就可以。双指针,pcur是当前位置,pnxt是下一个更低价的加油站的位置,为了编码简单可以把最后一个加油站价格换成0啥的,往后跑pnxt就可以,每次发现一个更低的,那dist[pnxt]-dist[pcur]就是在当前位置需要加的油,累计即可得到答案。

三、一元二次方程

        这个问题正解就是按题目写的搬砖咯,把题目的要求if出来,然后写若干个小函数实现一下里面的操作就可以了。其实这个题还是不错的,基础考察比较到位,更体现了编程习惯对编码难易的影响。

        其中有2解的特殊性质占50%,所以优先实现这个甚至只实现这个是一个好的应考策略。

四、旅游巴士

        这个题看起来应该就是比较直白的在有向图上跑单源最短路(都不用换算的,速度为1),但是说每个道路有开放时间,那就是说记录的结构体里面多添加ai进去,从而使得尝试路径时可以拿到信息判断一下这条边现在能不能走:跑dijkstra的时候由于速度1,所以最短路的长度就是时间。

你可能感兴趣的:(算法)