C. K-Complete Word


C. K-Complete Word


标签

  • 难想的暴力

简明题意

  • 给定n长的字母序列s,再给一个k。(k|n)
  • 如果说s是k复杂的,需要满足:1.s是回文。2.s满足周期性,且每个周期的长度是k。
  • 现在需要你使得这个s是k复杂的,问最少需要改动多少次(每次可以将一个字母改成任意字母)

思路

  • 首先s是回文串且周期是k,那么每一个周期的字串一定也是回文串。(这个结论,直接拿第一个周期和最后一个周期比对一下就能发现每个周期一定是回文)
  • 有了这个结论就很简单了。我们需要让每个周期变成回文串就行了。
  • 那么每个周期变成什么样的回文串呢?我们按照一个周期的每一位进行考虑。每个周期内的第i位和k-i-1位一定是相同的(因为一个周期是回文),那么我们直接看看所有周期的i位和k-i-1位的哪个字母出现的最多,把其他字母都改成出现最多的字母。假设出现最多的次数是cnt次,那么需要改动的就是 2 ∗ n / k − c n t 2*n/k-cnt 2n/kcnt次。
  • 注意特判一下k为奇数时,正中间那一位。是 n / k − c n t n/k-cnt
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值