[2024.11.06]NOIP 模拟赛

不会tarjan不会广义串并联图……

赛时

T1 看上去很可做。

看到中位数首先想到二分。在二分的背景下,问题转化为求当前最多能使多少个元素大于等于某个定值。

我们不妨先让所有的元素都选择 a 值,然后相当于要选择一段连续的 b 替换一些 a,要求最后总和最大。所以可以新设一个代价数组 v,并令:

vi={0aixandbix0aixandbix1aixandbix1aixandbix

然后跑一个最大连续子段和就可以了。

T2 第一眼看上去以为 n,m103 以为不可做。然后问了旁边的人他说 n,m15

因为 215+15=1,073,741,824>>300,000,000,所以我猜正解是类似状压什么的东西。旁边的人告诉我没有部分分,所以我只能去推正解了。

但是推着推着这道题变成了子序列和为定值的存在性问题,这个显然没有非指数级做法,不会了,我又问了一遍旁边的人,他说没有部分分。

大概 9:30 的时候题目终于下发部分分了,当我看见 T2 的部分分表格时,我直接红了啊,然后去把旁边的人😡🤬

忍住气,去把 T2 的 17+10+13+13 写了,写完以后我发现当精确计算复杂度的时候会 TLE 13pts。

其它部分分不会写,但此时我已经感觉这道题像是一个 dfs+剪枝 了。

自己手推了一些,比如和为定值直接返回,和大于等于定值直接返回,剩下和小于定值直接返回……

写完以后本地自己造的样例跑了 1.58s,于是我开始卡常,用变量代替数组,能不开 long long 就不开……,写到大概 10:00 感觉差不多了。

此时在比赛首页看到一个压缩包,点开以后才知道这场比赛原来是有大样例的。我测了测,然后出事了,T1 挂了。

我慌了,检查发现是自己 v 数组赋初值时逻辑嵌套有问题,改过以后就过了。

去看 T3,一开始读错题了,没看到两条路径,去写了个 Floyd 回来发现样例假了才意识到。

然后想到该条件等价于两点在一个边双内,所以去写 Tarjan 了。

写到大概 11:40 调过了小样例,但是大样例假了。

手推了推发现该思路好像不成立,正确思路应该是从一个边双向外拓展。此时感觉有点来不及写完了,T4 也不想看了,就接着去给 T2 卡常了。

赛后

T3 的思路其实没有假,赛时应该是代码问题。好在只挂了十分。

T3 旁边的人说思路不难想,但是写不动。

T2 发现赛时所有的 100pts 只有我是单向搜索+剪枝,但是时间碾压所有的双向搜索,看来还是要相信剪枝的复杂度。

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