【学习笔记】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]
  • 现在你会判无解了
  • 假设 a a a没有相同元素
  • 答案是显然的
    请添加图片描述
  • 假设 a a a有相同元素
  • 首先把自环删了
  • 然后建立有向图 a i → b i a_i\to b_i aibi
  • 手玩一下发现 题解的做法是 环的最小数目=连通块数目
  • 下给出构造
  • 考虑每个连通块的长相
  • 显然是若干环套在一起,同时共用了节点
  • 按照度数拆点就能构造一个简单环了
  • 理论上环的最大数目也是能求出来的
  • 为出题人点赞

Poor Turkeys

  • 考虑构造无向图 G = ( V , E ) G=(V,E) G=(V,E)
  • f [ j ] f[j] f[j]表示 i i i存活的前提下, j j j被吃掉的最大时间
  • ( u , v ) (u,v) (u,v)合法当且仅当 f [ u ] > w f[u]>w f[u]>w
  • 可以按边从大到小加入
  • 复杂度 O ( n m ) O(nm) O(nm)
  • 果不其然wa了
  • 如果存在 k k k,满足 f i [ k ] > 0 , f j [ k ] > 0 f_i[k]>0,f_j[k]>0 fi[k]>0,fj[k]>0
  • 说明 i , j i,j i,j不可能同时存活
  • 这个结论好妙啊qwq

Rotation Sort

  • d p [ i ] [ j ] dp[i][j] dp[i][j]表示对 1 ∼ i 1\sim i 1i排好,排好后的序列后继权值为 j ( j > i ) j(j>i) j(j>i)的方案数
  • 发现是可以转移的
  • 其实怎么 d p dp dp都行啦

Cleaning

  • 不想听课只能做agc了
  • C [ i ] = A [ i ] − ∑ j ∈ s o n [ 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]合并成一个点
  • 这是个经典的贪心就不说了 不是本题重点
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值