前言
快要特长生考试了,把前几年特长生试题的错例和一些相对有价值的题目写一写。
希望能过吧 /xyx 。
一些 sb 的错误
- 不确定是否有多余空格或者换行符的字符串读入可以使用
getline(cin,s)
,保证不会因为多余字符而出错。
例题题解
2013年 T4 廉价最短路径
定义有向图中权值和最小的最短路径的权值和为该图廉价最短路径的长度。其中一条路径的长度为其边数。求从 1 到 2 的廉价最短路径长度。
\(n \leq 100,m\leq 1000\)。
在 Floyd 求最短路径的基础上加上一个 \(cost[i][j]\),表示当前从 \(i\) 到 \(j\) 的廉价最短路径长度。最短路转移时顺便维护 \(cost\) 即可。
时间复杂度 \(O(n^3)\)。
2014年 T2 数字积木
求若干个正整数全部连接起来能得到的最大整数是多少。
\(n\leq 1000,\) 数字 \(\leq 10^{200}\)
排序,如果 \(\overline{ab}>\overline{ba}\),那么 \(a\) 最终一定在 \(b\) 前面。
证明:如果 \(a,b\) 中任意一个不是另一个的前缀,那么该结论显然成立。如果 \(a,b\) 中有一个是另一个的前缀,那么最终答案夹在 \(a,b\) 两个数的数字也一定有 \(a,b\) 中一个为前缀。设 \(b\) 后面的数为 \(c\),此时 \(\overline{ba}\) 就是 \(\overline{bc}\) 的前缀,所以有 \(\overline{ba}>\overline{ab}\),矛盾。
时间复杂度 \(O(n\times len\log n)\)。其中 \(len\) 是数字长度。
2015年 T3 糊涂的教授
求二分图完全匹配是否存在多种匹配。
\(n\leq 26\)。
首先如果一个子图,黑点和白点的数量不一致,那么显然不行。
接下来考虑拓扑排序。如果一个点只有一个能匹配的对象,那么就将这一组点匹配。如果最后存在点无法匹配(即存在环),那么就有多解。
2015年 T4 集合问题
求有多少种方案将 \(1\sim n\) 的每个数都划分到两个集合中,使得这两个集合的数字和相等。
\(n\leq 39\)。
首先如果 \(s=\sum^{n}_{i=1}i\) 不是 2 的倍数,那么无解。否则我们只需能否从 \(1\sim n\) 种选出若干个数和为 \(\frac{s}{2}\)。
可以用背包解决,但是 \(n\leq 40\),也可以分断爆搜。
记 \(cnt[s]\) 表示组合出和为 \(s\) 的方案数。对于 \(1\sim \frac{n}{2}\) 记录到 \(cnt[s][1]\) 种,\(\frac{n}{2}+1 \sim n\) 记录到 \(cnt[s][2]\) 中。
然后枚举 \(i=0\to m\),答案为 \(cnt[i][1]\times cnt[m-i][2]\) 的和。
记得最终答案要除以 2,因为一个方案被我们计算了两次。
时间复杂度 \(O(2^{\frac{n}{2}}+m)\)。