blog不能贴附件,有需要题目,测试数据和solution的可以去群空间里下,或者发email给我。
A.排名计算
难度:中等
代码长度:中
模拟题,主要就是一个排序,由于测试数据不大,不用快排也不会超时。注意一下排序方法和排名输出就可以了。
B.XTUCPC
难度:容易
代码长度:短
简单的字符串处理,这个题目考细心,首先要看清楚题目。存在两个陷阱:1.至少要删掉一个字符。2.字符串可能会有空格。
C.绩点计算
难度:容易
代码长度:短
这个题算最容易的,而且很实在,没有陷阱。只要循环+分支就可以搞定,考基本编程能力。
D.1,2,4
难度:中等
代码长度:短
这个题就是一个递归的题目,递归方程是f(n)=f(n-1)+f(n-2)+f(n-4),f(0)=1,f(1)=1,f(2)=2,f(3)=3。标准程序里我是用循环+打表来做的,不过后来听说直接递归也能pass,是数据比较弱。另外就是按题目的意思,如果计算100的话应该要用大数,后来考虑到大部分同学的情况,降低了难度。
E.奥运会开幕式,我来了
难度:难
代码:中等
这个题是最短路径的扩展,其实方法是类似的,算法就是贪心+bfs。1.将所有的边(使得C1<C2)按C1递增排序;2.建立一个城市数-1的链表数组list[n-1](我用的vector数组,这也是标准程序中唯一使用了c++的一个,用C的话,程序代码会长一些),用于存放第t天到达城市C2的最少费用;3.依次遍历所有的边,贪心地选择到达C2城市的最小费用,直到所有边遍历完成;4.根据题目的时间要求,在list[n-1]链表中选择满足时间条件的最小费用就可以了。
因为时间比较紧张,标准程序在很多地方其实还可以优化。
F.冬天的送货攻略
难度:难
代码:短
这个题是标准的一维动态规划的题目。m为工作时间段数,我们考虑小明最多可以休息多长。所以f(m)=m;当s-1时刻有任务时f(s-1)=max(f(s-1+t)-t),当无任务时,f(s-1)=f(s);最后m-f(0)即为所求。由于时间有限,测试的数据比较弱,所以可能暴搜也能过。