牛客周赛97文字版题解

写在前面

找不到从代码错误可以留言评论区,出题人会给出解答。

这样简单的周赛你喜欢喵?

A.回文串

若三个字母存在两个及其以上相等,那么就可以把字母放在首尾构成一个回文串。

若三个字母互不相同,则无法构成回文串。

B.2025

把给定的数字 的数位拆解出来并累成得到乘积,然后将其根号转为int类型再平方看是否得到原数。

值得注意的是,判断一个数是不是完全平方数,不能采用 的方式,因为其存在浮点误差。

C.移动

显然对于每次移动,需要把询问区间中最左边和最右边的障碍都找出来,这样答案便是 ,若区间不存在障碍答案则是 。对于每次询问若采用暴力遍历则是 ,无法通过,我们可以采用链表的方式,维护对于任意的 前面第一个障碍的位置和后面第一个障碍的位置,这样预处理 ,单次回答

需要特别注意的是 可能存在 的情况。

D.字符串操作

由于字典序的性质,若要使得字符串的字典序最大,即操作第一个不为字母 z 的位置 ,将其操作为 z 的次数记作 ,那么遍历 后面的所有位置,考虑当前 若满足操作 次后能变大,则继续操作,否则停止即可。

E.平衡排列

对于一个长度为 的排列,其总和为

为奇数,那么必然不能分成两个部分使得总和相等,输出 -1。

为偶数:遍历 ,若当前  则放左边,同时 ,否则  放右边。

F. 小苯的序列分段

首先是无解情况,对于 的前缀和 的后缀若存在大于它本身的,则无解,例如:

4 2
4 3 2 1
3 1

4 2
4 1 2 3
4 2

我们记 表示数字 中存在的位置,显然要存在有解情况必然满足

我们考虑 , 有多少个 满足 ,记作

这边便能得到 。答案便是 的乘积。

全部评论
1 回复 分享
发布于 06-25 17:37 湖南
没来打,错过了一次ak的机会😫
点赞 回复 分享
发布于 06-23 08:38 北京

相关推荐

每晚夜里独自颤抖:把华北改为华南再试一试,应该就没啥问题了。改完可能都不用投,别人主动联系了。
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务