不保证严谨 。保证在一定情况下是正确的。
XOR Replace
- 记序列异或和为a[n+1]a[n+1]a[n+1]
- 一次操作等价于交换a[i]a[i]a[i]和a[n+1]a[n+1]a[n+1]
- 现在你会判无解了
- 假设aaa没有相同元素
- 答案是显然的

- 假设aaa有相同元素
- 首先把自环删了
- 然后建立有向图 ai→bia_i\to b_iai→bi
- 手玩一下发现
题解的做法是环的最小数目=连通块数目 - 下给出构造
- 考虑每个连通块的长相
- 显然是若干环套在一起,同时共用了节点
- 按照度数拆点就能构造一个简单环了
- 理论上环的最大数目也是能求出来的
- 为出题人点赞
Poor Turkeys
- 考虑构造无向图G=(V,E)G=(V,E)G=(V,E)
- f[j]f[j]f[j]表示iii存活的前提下,jjj被吃掉的最大时间
- (u,v)(u,v)(u,v)合法当且仅当f[u]>wf[u]>wf[u]>w
- 可以按边从大到小加入
- 复杂度O(nm)O(nm)O(nm)
- 果不其然wa了
- 如果存在kkk,满足fi[k]>0,fj[k]>0f_i[k]>0,f_j[k]>0fi[k]>0,fj[k]>0
- 说明i,ji,ji,j不可能同时存活
- 这个结论好妙啊qwq
Rotation Sort
- dp[i][j]dp[i][j]dp[i][j]表示对1∼i1\sim i1∼i排好,排好后的序列后继权值为j(j>i)j(j>i)j(j>i)的方案数
- 发现是可以转移的
- 其实怎么dpdpdp都行啦
Cleaning
- 不想听课只能做agc了
- 记C[i]=A[i]−∑j∈son[i]A[j]C[i]=A[i]-\sum_{j\in son[i]}A[j]C[i]=A[i]−∑j∈son[i]A[j]
- 显然要让C[i]C[i]C[i]清零
转化错了gg了- 考虑一个好的转化
题解的做法是 - 设f[u]f[u]f[u]表示从某个点可以拓展的路径数量
- 这些路径有两种情况:
- 合并成一个点,或者继续向上扩展
- 显然是定值,因此f[u]f[u]f[u]可以递推求出
- 然后我们每次取出两个最大的f[v]f[v]f[v]合并成一个点
- 这是个经典的贪心就不说了
不是本题重点
这篇博客探讨了几种算法问题的解决策略,包括序列异或和的交换操作、无向图构建及其复杂度分析,旋转排序的动态规划解法以及清洁问题的转化思路。博主分享了独特的解题技巧和对问题本质的理解,展示了如何通过贪心和递推方法找到最优解。
959

被折叠的 条评论
为什么被折叠?



