IOI2022
提醒:因为 day1 的题目不是刚做的,所以这篇题解就摆烂没好好写了。
鲶鱼塘
设第 列的高度为 ,若 ,则可以直接令 。
于是可以设 表示 的答案; 表示 的答案,则根据上面的性质可以方便地转移。
注意到一个状态 有效当且仅当 或 有鲶鱼,于是可以把状态数缩到 ,时间复杂度 。
囚徒挑战
先考虑一个做法:从高到低查询 的二进制位,这样可以得到一个 的做法。
发现可以对于每一位采用不同的进制,搜索最优解可以做到 。
发现如果当前的数是可能范围的最大值 / 最小值的话就已经能确定答案了,所以可以在原来的基础上每轮把范围多 ,搜索最优解可以做到 。
非常难写。学了一下最短解的做法,非常厉害。
无线电信号塔
先考虑 固定的情况。设 表示 左右两侧第一个高度不低于 的信号塔的编号,易于证明 这些区间要么不交,要么包含,那么我们肯定选择那些不包含其他区间的区间。
我们求出所有有效的三元组 。对于 的询问,首先我们把所有 的三元组拿出来,这些显然是可选的;此外,我们在左右两侧各可能再多选择一个信号塔,考虑如何判定这个东西。
设最左边的三元组为 ,,那么可以证明我们选择的信号塔一定在 左侧,直接判断即可。注意当我们一个三元组都选不出的时候需要特殊处理一下。
于是我们解决了 固定的情况。发现对于一个 ,若 包含了 ,则对于 我们都有 的区间会包含 的区间。所以使用可持久化线段树维护所有三元组的 即可。
数字电路
先考虑如果钦定了每个点的颜色,如何求出方案数。如果 有 个儿子是 并且 也是 ,那么 有 种选择;否则有 种选择。这相当于对于每个点 选择一个与之颜色相同的儿子的方案数,即链剖分的方案数,要保证 是黑色当且仅当其所在的链对应的叶子是黑色。
所以我们可以枚举 所在的链的叶子,那么其他的点随意选儿子均可对应一种方案。所以叶子之间对答案的贡献是独立的,可以用线段树维护。
时间复杂度 。
最罕见的昆虫
考虑一个做法:我们依次加入每一个数,如果查询的结果 即弹出这个数,那么我们可以得到所有颜色各一个,即可以得到颜色种类数。我们删去这些位置之后再进行一遍上面的过程,如果颜色数量减少就说明答案为 ;反之可以一直进行。
考虑扩展一下,首先得到颜色数量 ,保持众数出现次数 ,那么答案 当且仅当最后容器中一共有 个数,于是可以二分答案。
考虑卡常。如果发现答案 ,那么我们可以把当前容器内的数锁在容器里,在以后的操作中不把它们挪出容器;反之,我们可以把当前容器外的数锁在容器外,在以后的操作中不把它们挪进容器,易于证明这样做的正确性。再把二分上界改为 即可通过。
千岛
胡了一个做法,大概是如果起点的出度 则必然存在解,否则可以递归求解;构造是找环之类的,要分类讨论。看了下其他题解,好像挺对的,有时间把代码补了。
一般我写下这句话就意味着我不会写代码了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App