![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
前缀和
方哲Beans
一只小蒟蒻
展开
-
Hyperregular Bracket Strings
给出n和k,有k组区间l,r,要求满足每个区间都是匹配的括号序列,且自己整体也是一个匹配的括号序列,长度为n,求满足条件的括号序列的数量,答案对998244353取模。匹配的括号序列的数量即卡特兰数,先用异或一个随机数来标记区间,然后利用异或前缀和来记录每个位置的贡献。原创 2023-05-29 13:59:37 · 210 阅读 · 0 评论 -
Say No to Palindromes
因为要不存在长度大于等于2的回文子串,所以相邻的字符不能相同,又因为字符串只包含abc三种字符,所以不难发现,字符串只能由"abc"“acb”“bac”“bca”“cab”"cba"这六种子串组成,因此可以令f[j][i]表示前i个字符,当前匹配第j种子串,不合法的字符数,即需要的操作数,对于每次询问,枚举6种子串, ans = min(ans, f[j][r] - f[j][l - 1])即可。例如,a只能变成b或c。原创 2023-05-25 19:37:05 · 48 阅读 · 0 评论 -
Codeforces Round 871 (Div. 4)G. Hits Different
l = l - fl, r = r - fl + 1, fl为当前层,当然,要考虑边界情况,l = max(s[fl - 1], l - fl), r = min(s[fl] - 1, r - fl + 1). 至于求区间分数和,可以用前缀和的方法求,具体看代码。给一个如图所示的三角形,输入n,击倒方块n,获得分数n*n,同时方块n上面的两个方块也会落下,同时获得这两个方块的分数,一直向上走,知道方块1,如图所示为n=9的时候掉落的方块,求获得的分数。然后维护每一层的区间l,r。原创 2023-05-24 13:18:01 · 125 阅读 · 0 评论 -
Running Miles
利用前缀和和后缀和,l[i]表示前i个a[i]+i的最大值,r[i]表示后i个a[i]-i的最大值,最后枚举每一个i求l[i]+a[i]+r[i]的最大值即可。给一个数组a,任选一个区间l,r求a[i1]+a[i2]+a[i3]-(r-l)的最大值,其中l原创 2023-05-14 21:25:15 · 46 阅读 · 0 评论