7.23考试总结

首先%%%Zesty_Fox学长,本次%你考由他搬题和数据,同时,为了考验我们的代码习惯,缩小了数据的时空范围,加强了同学们的卡常能力。(上述废话

哦哦对了,这次是dp专题测试。

T1

滑雪,直接 \(O(n^2)\) 记搜秒过,总用时大概 \(15\min\)。但是下考场测 luogu 数据是 TLE on #2 的,学长的数据倒是过了,有些奇怪。

T2

涂色,这个一眼区间 DP,但是忘记柿子了(悲,考场简单想了一下:设 \(dp_{i,j}\) 表示 \(i\)\(j\) 满足条件的最小代价。初始状态肯定是

\[dp_{i,j}=\begin{cases} 1&i=j\\ inf& i\ne j \end{cases}\]

如果对于任意满足 \(1\le i\le j\le n\)\(s_i\)\(s_j\) 相同,那么很显然是在画的时候直接从 \(i\)\(j\) 一次性画过,而不同则必然有一个是断点,从这里开始,两段颜色发生改变。枚举该断点即可。

则有:

\[dp_{i,j}=\begin{cases} \min(f_{i+1,j},f_{i,j-1})&s_i=s_j\\ \min \limits _{k=i}^{k<j}dp_{i,k}+dp_{k+1,j}&s_i\ne s_j \end{cases}\]

写完前两题大概是 \(50\min\),也就是 \(8:50\) 左右,看上去时间还很充裕。(flag?

T3

大意是给一棵树,定义两点的距离为最短路径经过的边的条数,求有多少对距离为 \(k\) 的点对。

其实可以淀粉质,但是不是很好想+考场上不敢写遂尝试写其他做法。

推了挺久的 dp 没太推出来,反复的设状态,推转移,然后 hack。大概是到了 \(10:30\),我意识到树形 dp 的正解可能真的难以推出来。遂放弃正解,打了个暴力走人。

我的思路局限在用根节点去更新答案,事实上应该从叶子节点往上推,或许一开始的思路错误,给我造成了误导。或许换个思路多推一会儿就能想到正解了,但为了给后面的题腾时间先这样吧。

对于每个点 bfs 一遍,复杂度大概是 \(n^2k\),拿到了一个还算可以接受的暴力分。

T4

给定 \(l,r,k\),求 \([l,r]\) 内各数位

上包含的数种不超过 \(k\) 的数之和。

显然的数位 dp,转化为 \(sol(r)-sol(l-1)\),设 \(dp_{i,j}\) 表示 \(i\) 位数字共有 \(j\) 种数字。然后先用 dp 预处理出答案,口胡了一个转移方程,但是细细想来却没有正确性。而且查询时的边界也很难处理。大概是 \(11:20\) 放弃正解,考虑暴力。

看到特殊性质 \(k=1\),直接手写 \(log_{10}\) 然后乱搞。随后加上一些没任何效果,纯属心理安慰的特判,最后暴力枚举,拼一起的暴力分对我来时也还算 OK 了。

打完这题杂七杂八的东西后上了个厕所。大概是 \(11:40\) 左右

T5

题面。首先想到 01 背包,然后看数据范围还是算了。

然后在草稿纸上糊啊糊,啥都没糊出来。看到数据范围给了一个 \(c_i\) 都是 \(1\) 的性质。直接排序依次取得贪心。打完这个后一看时间竟然已经 \(12:10\) 了!努力的还想搞点分,翻啊翻,没找到其他题有什么特殊性质了。

出于一种奇怪的心理,我放弃了 T5 的特判,全部改为了贪心。然而,我在写贪心的时候只考虑了 \(c_i=1\) 的情况,而全是贪心的时候 \(k\) 减着减着会有负数而不经过 \(0\)!然后到手的 \(10pts\) 没了。

这里考虑的确实不是很细致,只想着匆匆了事,有点心浮气躁了。

临近交卷

在写完 T5 上完厕所冷静后,我开始检查文件。突然,我发现:调用了 INT_MAX 但是没调用万能头,,,只写 iostream 在 dev-c++ 是会自动补全头文件而不报错或触发警告的。手抖着修改完后一阵后怕:以后一定都要写万能头,千万不能图编译速度写 iostream。(又是一个 flag

最后

拿到了 100+100+55+40+0=295pts 的成绩,暴力拿的还算可观。wxy 小朋友没写万能头后使用 vector 后 dev-c++ 自动补全没报错,CE 了,挂掉 100pts,默哀。

posted @ 2024-07-23 22:42  立花廿七  阅读(46)  评论(0编辑  收藏  举报