【5.10】Codeforces 刷题

A. Di-visible Confusion

  • 题意:给一个长度为 n n n 的序列 a 1 , a 2 , … , a n a_1,a_2,\dots,a_n a1,a2,,an ,对于每个位置 i i i,如果 a i % ( i + 1 ) ≠ 0 a_i\%\left(i+1\right)\not=0 ai%(i+1)=0 ,就可以将 a i a_i ai 删掉。删掉之后,后面的数都会往前面移动一位。问能否将序列删成空。

  • 题解:CF1603A Di-visible Confusion 题解

  • 思路:首先发现性质: a i a_i ai 能被消掉的充要条件是 a i = l c m ( 2 , . . . , i + 1 ) × k a_i=lcm(2,...,i+1) \times k ai=lcm(2,...,i+1)×k , 当 n 大于 25 的时候就必定不满足了,必定可以消掉。前面的暴力枚举即可。对于某个元素,它与它之前的元素能被消掉的条件是递推的(有一点推理的思想)。

  • AC代码:https://codeforces.com/contest/1603/submission/156576614


A. Meximum Array

  • 题意:在这里插入图片描述

  • 思路:首先 预处理后缀 mex 。因为倒着看 mex 是递增的,因此可以 O ( n ) / O ( n log ⁡ n ) O(n) / O(n \log n) O(n)/O(nlogn) 预处理 , O ( 1 ) O(1) O(1) 查询。然后从左到右尺取分段删除即可。

  • AC代码:https://codeforces.com/contest/1628/submission/156591183


C. Minimum Ties


D. Say No to Palindromes

  • 题意:定义一个字符串 s s s 是 “好的”,当且仅当 s s s 不包含任何长度大于等于 2 的回文子串。给定一个长度为 n n n 的字符串 S S S m m m 个询问,每次询问给定一个区间 [ l , r ] [l, r] [l,r],求字符串 S l , … , r S_{l, \dots, r} Sl,,r 变成 “好的” 字符串至少需要修改多少个字符。本题中字符集为前三个字母 ( a b c ) (a b c) (abc)。数据范围 n , m ≤ 200000 n, m \le 200000 n,m200000

  • 思路:存在如上的回文子串,则必然存在某下标满足 s i = s i − 1 s_i=s_{i-1} si=si1 s i = s i − 2 s_i=s_{i-2} si=si2 , 则必然是 a b c abc abc a c b acb acb b a c bac bac c b a cba cba 之类的循环节,直接暴力 6 个后求前缀和即可。

  • AC代码:https://codeforces.com/contest/1555/submission/156594764


A. Long Beautiful Integer

  • 题意:

给定一个由 a 1 , a 2 , … a_1, a_2, \ldots a1,a2, 从左到右构成的整数 x x x 和一个正整数 k k k

若由 b 1 , b 2 , … b_1, b_2, \ldots b1,b2, 从左到右构成的整数满足 ∀ i ∈ [ 1 , m − k ] , b i = b i + k \forall i \in [1,m-k], b_i=b_{i+k} i[1,mk],bi=bi+k ,则称其为美丽数。

请求出最小的由 b 1 , b 2 , … b_1, b_2, \ldots b1,b2, 从左到右构成的美丽数 y y y,满足 y ≥ x y \geq x yx

  • 思路:考虑答案的前 k 位。设 ( b a s e ) n (base)_n (base)n 是 s 的前 k 位即 b a s e base base 作为循环节构成的长度是 n 的数字,答案必然是 ( b a s e ) n (base)_n (base)n ( b a s e + 1 ) n (base+1)_n (base+1)n 。如果 ( b a s e ) n < y (base)_n < y (base)ny ,则答案就是后者。

  • AC代码:https://codeforces.com/contest/1268/submission/156592593

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值