HNOI2013解题报告
Author: Pengyihao
Day1 T1 比赛
思路
这是一道搜索的题目。
一个重要的优化就是,因为球队的分数排序后是不影响后面的答案的,所以判重的时候可以很方便。
然后还有就是 \(28^{10}\) 是不会爆 long long 的……
代码
|
|
Day1 T2 消毒
思路
可以发现最优的话一定要是,选择的区域中的一维为 \(1\),另外两维为最大值。
因为 \(abc\leq 5000\),所以它们中的最小值是小于 \(20\) 的。
把这一维看作高,然后枚举每一层选不选。
然后剩下的就转化成了二维问题。
这就是个典型的二分图最小点覆盖,网络流跑就可以了。
时间复杂度为 \(O(\)松\()\) 。注意要进行常数优化。
代码
|
|
Day1 T3 旅行
这是一道很难的题目。我看了题解也暂时无法解决此题,所以决定跳过它。
Day2 T1 数列
思路
考虑差分数列。
差分数列的可能数量为 \(m^{k-1}\)。
于是答案就为 \(\sum{n-\sum_{i=1}^{k-1}{a_i}}\)
其中 \(a_i\) 表示差分数列的第 \(i\) 项,最前面的 \(\sum\) 表示枚举的差分数列。
\(n\) 可以提出来,而 \(a_i\) 的贡献是独立的。
所以最后答案为
\[m^{k-1}\times n - m(m+1)/2\times (k-1)\times m^{k-2}\]
代码
|
|
Day2 T2 游走
思路
我们可以贪心来做——求出每条边走过的期望次数,然后从大到小分配从 \(1\) 到 \(m\) 的编号。
边的期望次数的求法是一个裸的高斯消元,这里就不再赘述。
代码
|
|
Day2 T3 切糕
思路
对于每一个位置,从所有层向上一层连边,容量为点权。
对于每一个位置,从第 \(i\) 层向相邻位置的 \(i-d\) 层连边,容量为 \(+\infty\)。
对于每一个位置,从源点向第一层连边,容量为 \(+\infty\)。
对于每一个位置,从最高层向汇点连边,容量为 \(+\infty\)。
代码
|
|