NOIPro 模拟赛 | R15

习惯了谎话,早已分不清真假。

其实这场出得还挺好的,让我们为出题人点赞!


T1

做了 45 分钟,废了。

首先想到:从小到大加数,然后加到合法的时候再回来删除多余数。

很容易被 hack,比如前面有 2,3 把左边覆盖完了,中间来一个 4。最终我们必定将这个 4 删掉,显然不优。

场上根据这个反例就发现中间一行、一列的点非常重要,然后手搓了一下样例发现:选择的数不会很多。

又:一个数至少会覆盖一个角

于是大胆猜测:至多选择 4 个数。看上去也是比较显然的,因为一个角的位置用 2 个位置覆盖真的不优。

那么根据选择多少数讨论就做完了。

T2

首先理解题意,然后注意到 bx=0,所以前后是独立的问题。

后面只需要 b 单调不增,这个是经典结论,C(len+V,len)。(花絮:打牛客时碰到这个东西,放平方过就打了个 dp,赛后发现题解用了组合数,于是就记住了)

前面的 O(n2) 前缀和优化 dp 也非常显然,然后就有 64pts 了。这也是我的最终分数。

赛后我惊讶的发现,有些人和我是相反的。只能说太神奇了。

注意到我们前面优化 dp 时根据 a 推出了上一个 b 的范围。

写出的式子化简后变成:bibi1aiai1

这个时候转化成差分,然后根据 b 数组和其差分构成双射,就做完了。

观察能力为 0?

T3

待会写。

S=2 时对于每一行连接 (ai,1,ai,2),正反方向表示在左边还是右边。

神奇地发现最后让每个数出入度相等/差 1 即可,跑欧拉回路。

对于差 1 的情况就加个源点连向奇数点即可。由于一条边加入的度数是 2,所以整个图度数是偶数,也就是有偶数个奇点,所以源点最后度数也是偶的。

分治是因为 m 是二次幂,并且尝试拓展 S=2 的思路。

如果我们随便把一列钦定到另外一列(如果跨越 mid 交换),这成立吗?

证明考虑:如果这一列某些要交换的数都去到了另外一列,这是显然没有必要的,因为我们可以在分治这一边的时候再交换原来的一列和另外的一列,分治另一边同理。

所以每次分治都做 S=2 的情况即可。


拓展

这种类型的题目还有:CF429E 和 CF547D。没做过所以考场上不会情有可原

后面那个题一眼 xy 连边,差不多就和 T3 一样了。

前面那个题显然你不能每个线段向点连边,不然这些边的定向可能不一样就矛盾了。

转化成差分,连边 lr+1


T4

直接记忆化搜索就可以获得 64pts,我们是优秀的暴力。

T4 做题过程:挨着题有 24 暴力 -> 36 -> wc 20000 刚好放平方过!(48) -> A 可过(56) -> 测了 B 的大洋例发现过了!(64)。

结论:

[l,r][l,r] 的并是 [L,R],且交不为空,那么 fk(L,R)=fk(l,r)fk(l,r)

先证明:f(L,R)=f(l,r)f(l,r)

因为 [l,r],[l,r] 值域有交,所以交的那些值域中 [mn,mx] 都是存在于 f(L,R) 中的。另外 2 部分的 [mn,mx] 和交的部分拼起来就是 [L,R] 的答案。

k 次方呢?对于后面部分,由于一次过后他们相交,故第二次的时候他们本来是相交的,运用上面的结论一直做还是相交的。

对于前面部分,我们可以设最后是 [mn,mx],容易证明后面的区间也一定能取到 mn,mx

根据类似的证明可以得出结合律,于是 fk(L,R)=iSfk(li,ri)

先用倍增求出:dp(k,j,i) 表示 l=i,r=i+2j1(l,r) 进行 2k 次次方过后的区间,根据 f2k=f2k1(f2k1(l,r)) 转移即可,因为我们知道 f2k1(l,r),所以很好解决。

考虑 st 表合并的时候两个区间是一定相交的,就做完了。这题真神,喷不了。


不管是打比赛还是做练习,每一道题都要有:

1.思维过程(细心读题、大致思考、认真草稿)

2.书写过程(仔细打代码,做到打了就不会出现低级错误)

3.检查过程(算法正确性的检查、时空复杂度的检查、重要的题目在有时间的情况下一定对拍)

4.总结过程(遇到很妙的题、总是犯错误的知识点,做到总结及举一反三)

如果平时训练也能这样严格执行,时间久了,你一定会受益匪浅!加油!

posted @   LCat90  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示