7.24 之后的考试总结

7.24

\(100+100+100+0=300\)

整体:前三题发挥稳定,最后一题确实超出了我的知识范围,但是较为简单的 30 pts 没有细想,比较可惜。

T1:

两个 0-1 串,每次选中两个串上的两个等长(位置不一定相等)区间,询问两个区间不相等的位置数量,\(2\) 取模

Solution:考虑对 2 取模经典问题模型,这类问题有一些有趣的解决方案:

第一个是考虑异或操作,因为异或就是模 \(2\) 意义下的加法,而且有较多性质。

第二个是考虑消掉一些重复(或者可以一一对应)的项来达到正确的复杂度,具体说根据实际情况考虑分治,meet-in-the-middle 等算法。

回到本题中,本题较简单,因为发现两数不同就意味着异或为 \(1\),有奇数个也意味着不同数量的异或为 \(1\),考虑异或的结合律,则答案就是把选中部分全部异或。

维护前缀和即可。

T2:

\((n+1)\times (m+1)\) 的点阵图中选中 \(k\) 个点,满足:

  1. 它们在一条直线上;

  2. 相邻两点距离不小于 \(d\)

求满足条件的方案数。

多测,\(n,m,d\le 500,k\le 50,T\le 20\)

Solution:枚举数数题。

考虑枚举左下端点和右上端点,则此时方案数较为好计算,考虑使用插板法,并预处理组合数,复杂度 \(n^2m^2T\) 真美丽。

但是发现其实枚举端点是没啥意义的,因为答案只和 \(\Delta x,\Delta y\) 有关。

考虑枚举 \(\Delta x,\Delta y\) 并计算每一个的贡献次数,复杂度回到 \(nmT\)

T3:

给定一棵以 \(1\) 为根的有根树,你可以任选起点,每次向某个祖先或者子树内某个点跳,但是不能重复经过已经去过的点,问最多能走过多少个点。

Solution:

考虑二叉树,发现中序遍历挺对的,难道一定有解全覆盖?

并不是。菊花图就不是。

但是我们发现答案形如:解决一个子树,回到一个祖先,解决另一个子树并把没解决的部分挂上去。

选那两个子树呢?肯定是最大的两个,故每次操作形如吸收所有子树的答案并取最大的两个合并再加 \(1\)

于是使用 set 启发式合并以获得 \(O(n\log ^2 n)\) 的复杂度。

7.27

\(100+100+100+0=300\)

整体发挥稳定,该做起的都做起了,最后一题确实抽象!

在错误大样例干扰下通过,证明了自己对大样例的去依赖性(?)

T1:数轴上共 \(n\) 个点,你可以选择 \(2m\) 个相连成 \(m\) 条线段,求总长度最小值。

Solution:显然选相邻点的点对最优。

那么变成在 \(n-1\) 个点对中选 \(m\) 个,位置上不能相邻,求最小代价。

这个是反悔贪心经典例题。

不过作为 T1,数据很小,直接 \(dp\) 即可通过。

T2:一个长为 \(n\) 的排列,一些位置为 \(0\) 表示待填充,现在可以任意删除一个,再填充所有 \(0\),使得没有重复元素情况下,序列字典序尽量小。

Solution:

CF 味很重的一道题目。

字典序基本上肯定按位贪心。

然后简单分类讨论即可。

T3:虚树题,来不及写清楚,不过运用了伸缩树的性质,做法是考虑维护 dfs 序相邻的 LCA 集合。

T4:神秘 DP,没人做出,只好跳过。

8.11

\(40+0+91+40=171\)

整体:不挑战,怕战胜,困困困,难难难。

T1 被 windows 背刺,以后 ull rand 还是都写四个吧。

T2 会了但是困,不想写

T3 没啥说的,原。

T4 有想法,但是码力不够考场上肯定也写不出来。

从 T1 拓展学习了 Xor-Hash。

8.21

\(20+100+70+20=210\)

唐唐唐。

怎么 fsfdgdg 当时会 A 啊。

然后就是联考素质未知,所以难度很可能跟顺序毫无关联,之后如果搞不出 T1,考虑签到可能在后面,不要慌,也不要死磕在一道题上。

但是,说签到,让我看看是谁不会 meet in the middle?哦,是我!

可能还是被顺序诈骗了吧。

T3:唐题,因为 \(n\le 40\),考虑折半搜索,就简单了)

T2:线段树 / 倍增简单题,你说我糊线性图啥呢。

T1:很有趣的 DP 题目,以后看到 Dp 题目,也应该考虑状态数的优化,只找有用的状态。

T4:好玩的 Xor-Hash,学会了一个奇数转偶数的 trick。

posted @ 2024-07-25 15:19  Fun_Strawberry  阅读(10)  评论(0)    收藏  举报