ABC366简要题解
C
直接维护一个桶,表示每个元素当前的出现次数。
再利用这个桶直接维护答案即可。
D
三维前缀和模板题。
E
注意到答案中只会出现
于是单独考虑
F
首先我第一个尝试的思路是贪心,但是很显然没法贪。
如果没法贪心,看起来就只能是
但是直接线性
于是我们希望能有一个合理的顺序——考虑排序。
注意到一个经典的思路就是,我们对于一种最终选择的顺序方案,调换其中相邻的两个数不会对其前面和后面的贡献产生影响,只会对这两个位置的值产生影响。于是我们比较优先级的时候就按照这两个数谁在前面更优来决定。
同时既然我们要拿来排序,就必须要证明出大小关系的传递性。这是我们最初的
移项,两边同除以
容易发现,现在的式子只与
于是我们就可以开始
第一个思路就是,设
但是数组的值应该表示什么呢?注意到有两个东西要维护,一个是前面的
面对这种要同时维护两个信息的
- 两个维度中有优先级,比如优先比较第一个。
- 每次从
转移到 的时候只会修改少量的元素,这样的话可以直接用数据结构维护一下。
但显然这题不是,因为当前的第 个位置可能从之前的很多位置产生转移,得到我们无法排出的答案。
照这样看,我们的这条思路已经在这堵死了。考虑为什么无法转移呢,换句话说就是
既然是“后效性”,那么我们正难则反不就行了?于是我们考虑倒着维护
G
根据定义,每个点都会对它的相邻点集产生一个限制,这些限制之间是杂乱无章的。
我们希望能通过发现一些性质来简化题目,但是很不巧,这道题不行。
所以我们只能通过枚举来解决。但是一次性枚举所有点显然不行,而它给的图又是一般图,没有良好的性质。所以考虑逐个枚举。
问题在于这些点之间可能会有错综复杂的关系,我们直接逐个枚举会产生问题。
所以考虑用一种方式对问题进行等价的转换,使得问题具有更好的性质。根据题目,又有
考虑上三角矩阵的最后一行开始逐个给点赋权。先考虑所有具有着限制的点,我们希望除了当前这个点之外其他点的权值异或起来
而有限制的点的权值又是由一些最初的无限制点的权之前决定的。所以说我们考率要怎样给无限制点赋权使得某些他们的组合异或起来不为
显然有个东西叫异或哈希(就是给无限制点随机赋权)。
然后问题就得以解决。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步