暑训记录7.23

早上

起来一看又上了60分,舒服了。
qcb题还被fst了,笑死。
花了一个小时才弄明白e题的思路,感觉挺巧妙地,cbb也tql

Harbour.Space Scholarship Contest 2021-2022 (open for everyone, rated, Div. 1 + Div. 2) E. Permutation Shift

题目大意

对于一个长度为n从1到n的序列a,我们可以将它向右移动k位,例:[1,2,3,4,5]右移2位后得到[4,5,1,2,3]
给出一个操作,选择i,j,交换序列中a[i]和a[j]的值。
现在给出一个序列b,问能否通过最多m次操作后,将b变成序列a移动k位后的序列

题目思路

根据偏移可以发现 偏移后序列p 中 p i = ( i − k ) m o d n pi=(i-k)mod n pi=(ik)modn
我们考虑将x序列转换成y序列的最小操作数
我们对比x序列和y序列,当 y [ i ] ! = x [ i ] y[i]!=x[i] y[i]!=x[i] 说明x[i]这个值要移动,并且y[i]也不再原位置,它要移回y[i]。
我们用并查集维护这个关系,我们最终的操作数就是,并查集中的数字个数-并查集中的环的个数
然后我们考虑怎么找k,题目要求我们最多m次操作恢复序列,那么b数组中至少有n-m*2个位置是满足题目条件的。又因为题目规定m<=n/3,那么满足条件的位置至少要有n/3个。
我们可以根据上面的偏移式子退出,所有点的偏移量x,并记录有多少个数的值等于x,如果这个数小于n/3,说明它一定不满足。相反的,当大于等于n/3时,我们再去计算他的操作数,如果操作数小于等于m的话,他就是我们的答案之一。

下午

终于给hdu第二场的入门dp补完了。。。
想补1011结果看了好久都没懂
然后就去看昨晚cf的f题了

晚上

看了一晚上f,终于搞明白咋做了,然后调bug一直调到十点,脑子都快宕机了,还有场div3。。。
然后div3就过了两题。。掉大分

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值