[DMY]2024 CSP-S 模拟赛 Day 18

今天打的虽然有遗憾,但是也在情理之中。

赛时

看了眼 T1,没有别人的犹豫,第一眼就看到了 n5000,然后开始写最短路。

算了一下 dijkstra 根本跑不满,无需 deque 的 01bfs。

写完以后大概 40min,改一下 longlong 就扔了。

赛后没挂,100pts。

T2 一开始没有思路,在纸上画画图感觉可以线段树搞。但是区间数字种类数我只会莫队,再考虑到动态开点什么的,没有继续下去这个思路。

考虑贪心。之前做过一道类似的题,赛后 liang 大佬说是游荡的奶牛。当时这道题是要让最多的线段不交,模仿类似的方法,我们可以先把 a 按照右端点排序以后枚举去计算 b 的贡献。我维护了三个指针,分别代表当前需要考虑的 a 的范围,当前可以作为答案的候选 b 的范围,以及当前(即上一次)选择的最靠右的答案的右端点位置。

这样排序过后可以把 b 左端点都比当前 a 右端点小的位置全都维护其右端点,插到一个 set 里面。每次贪心的选择当前候选答案中最大的右端点作为答案。

对于无解的情况,就是候选答案为空或者候选答案不符合条件,特判即可。

没有挂分,拿下2血。

T3 想了挺久的,最开始忽略最后一个基环树结构的限制,跑一个纯正的 DP,但是加上最终限制的时候无法直接处理。

思考最终的答案肯定是当前的 DP 值减去这个限制给予的答案,那我只需要找到这个贡献即可。

这个比较好实现,我们把 DP 数组改成三维,新的维度表示第一层选择的元素编号为 i

这样可以先预处理前两层的 DP 值,剩下的按照方程:

dpi,j,k=j=1sizi1dpi,j,k1    

转移就行了。

写完以后算了算可以有 30pts。

此时时间剩的不多,T4 按照题意直接 DP 可以有 10pts,我看 ai=0 的性质好像可以写,先估一下。

写完正常 DP 以后发现错了,检查发现没有赋初值。

意识到之后过了样例。发现刚才的性质发现就是一个线段树。

时间还剩 10min,发现这个性质好像可以用树状数组代替线段树从而节省时间,写完以后才意识到树状数组无法维护,导致丢了20pts。

赛后

最终得分 100+100+30+10=240,没有挂分,但是也没有写到能写的分数。

CSP-S下周就考了,所以基础代码能力还需要沉淀。

赛后试了试 10min 能不能写一颗线段树,发现不能。

现在思维方面不算太差,但是容易想偏导致该写的分数没写上去,就比如这次 T4 的初值和线段树部分。

posted @   Redamancy_Lydic  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
点击右上角即可分享
微信分享提示