20201004
考场
看完3题感觉没有一道会做的。。。
仔细看了看T2发现是原题就没有管。
T1数学题,感觉是找规律,\(O(n)\) 或 \(O(1)\) 。推了30min没找到,开始嚼着口香糖打dfs,结果打挂了。上个厕所冷静一下,发现没有判“翻转”情况,加上后就好了。题目中有一句“\(nm\le 32\)”,以为是少打了的“,”,于是挂着“32 32”开始打T2,发现太卡(内存使用率超过\(90%\))就关了。
T2一遍过样例。
T3完全不会,连环都不会找(只会双指针找链上单环)。yy了半天想到Floyd找最小环,同时维护点/边数。
最后40min打完,让T3维护的点/边数开始对拍,重新开始找T1的规律。lgh说手推的答案错了一个。。。
最后10min发现 \(n\le 3\)时像二阶等差,结果后面就没了。T2也没有再看,有点虚。T3大概拍了1w组大数据,没什么问题,随便交了一个。
考后发现lgh和hkh都找了T1的规律,但不完全。T2的确是原题。T3全部爆0。
A. 连珠风暴
考场
dfs每个位置的颜色,hash+map判重。
期望
\(O(n^{m+1})\)
60pts
实际
100pts (真的是 \(nm\le 32\))
题解
找规律。
B. 道路修建
期望&实际
\(O(n+m)\)
100pts
考场&题解
tarjan缩边双,找新图中度为1的点的个数记为leaf,答案为 \(\lceil \frac{leaf}{2}\rceil\)。
缩点后新图为一棵树,将叶子节点贪心地两两连边,整图就变为边双连通分量(任意两个新点都有两天路径:经LCA和经叶节点)
C. 最小圈
考场
不会做。
魔改了Floyd求最小环,转移最短路时统计边/点数,枚举环求最小值。
期望
\(O(n^3)\)
20pts
实际
0
题面说保留6位小数,结果数据保留了8位(没有spj)。改成8位后20pts。但实际上这个算法有问题:找环时不能用最短路。
题解
0/1分数规划
简化题意
给定有向图,求一个边权平均值最小的环。
做法
二分答案mid,将所有边权减去mid,若存在负环(dfs判)则合法。
证明
所有边权减去mid即平均边权减mid,若存在负环则说明该环的平均边权\(\le mid\),即 \(ans\le mid\)。
总结
- 前两题没有挂分
- T1应该让暴力输出解,人工判重无误后打表找规律
- T3没有想清楚(反正本来也不会)
- eps不要取太大(慢),比ans位数多2即可。