【学习笔记】AGC016

这篇博客探讨了几种算法问题的解决策略,包括序列异或和的交换操作、无向图构建及其复杂度分析,旋转排序的动态规划解法以及清洁问题的转化思路。博主分享了独特的解题技巧和对问题本质的理解,展示了如何通过贪心和递推方法找到最优解。

不保证严谨 。保证在一定情况下是正确的。

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_iaibi
  • 手玩一下发现 题解的做法是 环的最小数目=连通块数目
  • 下给出构造
  • 考虑每个连通块的长相
  • 显然是若干环套在一起,同时共用了节点
  • 按照度数拆点就能构造一个简单环了
  • 理论上环的最大数目也是能求出来的
  • 为出题人点赞

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 i1i排好,排好后的序列后继权值为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]json[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]合并成一个点
  • 这是个经典的贪心就不说了 不是本题重点
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值