西工大冬季校赛题解
E题 欢迎来到西北工业大学冬季赛
输出西工大缩写 NPU 即可。(我第一遍还以为要输出 hello,然后就GG了)
H题 松果痰抖闪电鞭
一个递推式,理论上照着递推就行了。
但是 的数据规模,显然不太方便线性来写,需要优化。
滚动数组
这个可以将空间复杂度压到,但是时间复杂度依然很高,理论上如果评测机快的话还是可以水过去的。(不知道为啥我WA了)
找规律
在调试上面那个WA的程序时,我发现这个递推数组似乎有一定的规律,然后看群里面有人发,就知道了:数组周期为5。
那么我们就可以将时空复杂度双双压到,轻松AC。
给出证明:
然后就可以得到:
得到周期性证明
J题 不讲武德
这个混元形意排序是这样的:将数列分成两半,分别分治,然后如果前一半数列的第一项比后一半数列的大的话,就将这两个数列置换。
很显然,这个排序法是错误的,但是构造数据属实让我想了好一会。考虑到分治的性质,我便从这里入手:
构造方式:数列一分为二,左右均严格单调递增,但是数列本身不是有序的,且左半段的最小值小于右半段最小值,那么:
如果分治过程中破坏了左右两个子数列的顺序结构,因为他们本来就是有序的,那么分治完成后,他们就是不有序的,那么整个数列最后必然不会有序。
如果没有破坏,那么两个分治是无效的,到达合并环节,根据构造性质,函数不会对我的数列进行修改,程序结束,此时我的序列是无序的。
综上,这种构造方式构造出来的数列可以成功 Hack 掉程序,此题结束。
F题 反复读密码锁
这个题目很像 NOIP2019 D1T1 【格雷码】,在一个构造的规律01序列寻找第 位的值。()
我们发现,可以构造 ,那么我们可以将长的序列的第位转化成长的反序列的第位。
根据01序列的有序性,我们可以简单写一个分治函数,记录状态,不断将其压下去,直到可以直接求解。
对了,题目说的是下一个,所以我们最好把 加1之后再计算。
I题 ACM基地招新大会
我们简单观察可以得出结论:如果一个人前面比他强的人少于两个,那么他就可以到第一名,否则就只能到第二个比他强的人的后面。
我们可以用来写,但是数据规模达到了,显然会T,我们必须优化。
这个数列不用修改,所以我们可以使用一个ST表来记录一个区间的最大值(以及他的位置),但是我们需要找的并非最大值,而是所有比某个人强的人之中最靠近的一个,例如 3 1 4 6 5 2,区间[1,5]中最大值是6,但是最靠近2的却是5。
我们可以这么写:记录下最大值的下标p,然后再计算p到数字左边的范围的最大值,如果有的话就继续更新p的值,以此类推,这样就可以保证题目的正确性。
对于随机数据,这个复杂度还是OK的,但是对于特殊构造的数据,例如 6 5 4 3 2 1,p的更新速度直接退化到了,还不如直接暴力来的妥当。
我们又注意到,这个更新顺序具有单调性,所以我们可以直接进行二分,将复杂度成功优化到了,能够成功AC。
D题 玩具
这题的正答率其实挺高,但是我做的惨不忍睹,各种想法都出来了......
实际上这题有一个结论:若存在符合条件的区间,那么最长区间必然包含有整个数列的众数。
证明:
当数列有多个众数时,以整个数列作为区间即可
只有一个众数时,不妨记他为,出现了次。
如果不存在一个区间,符合条件且不包含,那么可以得出结论:区间必然包含
如果存在这样一个区间,那么我们可以尝试将这个区间进行扩展。显然,我们可以将整个区间扩展到这样一种情况:序列中含有个(),且区间内还有一个或多个数的数量为。(原因:的数量从0开始线性增加,而且其总数量总是大于任意一个数字的数量,所以总是能够将他微调到和某一个数的数量相同的情形)。
证毕(证的并不是很毕)
无解的情况也很简单:所有数字全部相同
那么我们本质上只需要求出数列的众数即可
B题 运筹帷幄
数据规模这么小,直接爆搜就行了(枚举排列,DFS啥的都行,实现方式千奇百怪)。
第 6 类牌没有啥子用,纯粹凑数的,删掉就行。
英雄技能一回合只能用一次,反正只有一回合,那就当一张新牌用就行了。
然后就是喜闻乐见的调 bug 阶段了,反正我从下午四点半一直调到半夜,发现了不限于以下的若干 BUG:
- vis[i] = 1 写成vis[i] == 1
- continue 写成 break
- 把英雄技能消耗的能量打错了
- 忘了考虑没法打牌的情况
- 忘了拖到最下面,看看那个加伤害是什么情况
- 等等等等
这里给出代码吧,调的心累,WA 了 10 次才 AC:
其他题目
后续再更
__EOF__

本文链接:https://www.cnblogs.com/cyhforlight/p/14287073.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话