考试报告下载又是空白,我已经不想再说这个问题了。。反馈也没有人理。
so,这篇没有代码。。
第一题
题目描述
题目名称:单链表排序
单链表的节点定义如下(C++): class Node { public: int element; Node * next; } 实现如下函数:Node * sort(Node * head),排序以 head 为头结点的单链表,返回排序后列表的 head 节点;只能修改 next 指针,要求时间 复杂度和空间复杂度尽可能优化 。
题解
模板不写跟链表毫无关系,那出这种题目有什么意义呢?
直接视作数组即可。
复杂度分析
显然,快排。
第二题
题目描述
题目名称:合并二叉树
已知两颗二叉树,将它们合并成一颗二叉树。合并规则是:都存在的结点,就将结点值加起来,否则空的位置就由另一个树的结点来代替。
例如:两颗二叉树是: Tree 1 1 / 3 2 / 5 Tree 2 2 / 1 3 4 7 合并后的树为 3 / 4 5 / 5 4 7
题解
模板和树没有丝毫关系,并且给出的结构是层序遍历。这明显直接对位相加就行了啊,这题出的,我很无语。
复杂度分析
遍历一遍即可。
第三题
题目描述
题目名称:n边形划分
已知存在 n 多边形,连接多边形所有对角线,能形成多少区域。
题解
(
n
−
1
)
(
n
−
2
)
(
n
2
−
3
n
+
12
)
/
24
(n-1)(n-2)(n^2-3n+12)/24
(n−1)(n−2)(n2−3n+12)/24
公式没啥好说的,数学题。
复杂度分析
时间复杂度为 O ( 1 ) O(1) O(1)。
第四题
题目描述
题目名称:开心的金明
金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过 N 元钱就行”。今天一早金明就开始做预算,但是他想买的东西太多了,肯定会超过妈妈限定的 N 元。于是,他把每件物品规定了一个重要度,分为5等:用整数1−5表示,第5等最重要。他还从因特网上查到了每件物品的价格(都是整数元)。他希望在不超过 N 元(可以等于 N 元)的前提下,使每件物品的价格与重要度的乘积的总和最大。
题解
01背包,洛谷原题。
总结
题目与模板质量不提升的话,这竞赛价值只能说很小。
总之,我并不认为竞赛频率比竞赛质量更重要。