时间安排
8:30–9:00 读题。眨一看四道题都没什么想法。T1 估计是什么性质或者转化后用某种奇奇怪怪数据结构维护贡献的东西。T2 一眼有一个很假的贪心。T4 应该可以 DP 什么的。
9:00–9:15 T1,枚举暴力。
9:15–9:30 T2,有一个显然的贪心。感觉正确性不是太错,而暴力又没法写就先把贪心写上。
9:30–10:00 T3,T4 暴力。
10:00–11:50 T1,发现T1随机档貌似可以写。写完发现时限比较足,于是就稍微扩大了点搜索范围企图卡时限。
11:50–13:00 思考T4.
回顾反思
T1: 部分分卡实现直接卡 T 了,已经不知道多少次出现这样的问题了,评测机有波动,尽量不要把时间卡的太极限。正解的一个关键是,思考问题是将一维的序列投射到二维平面上,坐标一维,大小一维,这样与坐标、大小有关的贡献关系就被划分为几个本质不同的块,贡献的变化关系就一目了然。这题没做出来挺可惜的。
T2: 一个点是考虑题目中操作的本质是什么,是两次 swap ,对u一个排列,可以定义一个奇偶性为
(
−
1
)
逆序对个数
(-1)^{逆序对个数}
(−1)逆序对个数 ,那么两次 swap 显然不影响奇偶性,那么就保证了对有无解的判断。由于元素有重复,每次重新调换钦定的相同元素的大小关系就是在变号,就可以保证在存在解时一定能得到解了。
T3. 一个重要思想是,把所给条件映射到图上,这里是个折线图,那么原本抽象的数学关系在经过一定性质分析后就对应到图上相对较直观的图象的趋势关系。
T4.一个重要思想是,将题目所给条件建图,然后将题目所给限制对应到所建图上的相对简单的关系。这里题目限制说相邻两数之和不能为 m 和 m+1 ,那么将和为 m 或 m+1 的两数连边,根据题目形目性质可以形成一条链,那么容斥时不合法的部分就对应链上若干连通块,于是就可以直接 DP 连通块的段数。另一个点是,这里用到了 1e9 级别的阶乘,可以以 1e7 为 base 分块打表,块内暴力求,就可以以 base 的复杂度得到 1e9 的阶乘。