首页 > 其他分享 >Number of k-good subarrays

Number of k-good subarrays

时间:2024-08-06 17:06:10浏览次数:10  
标签:good 标记 subarrays Number 贡献 mx DP

我们发现,如果我们将满足题意的点在数轴上标出,那么我们可以获得若干个连续段。对于一个长度为\(l\)的连续段,他对答案的贡献就是\(\frac{l(l+1)}{2}\),我们把所有连续段的贡献加起来就得到了答案

于是我们发现这个可以拆分成子问题,具体见这篇题解。\(sol(n-mx,k-1)\)就是拆分成的子问题,因为对于\([2^c,n-1]\)这段区间的点的标记情况与\([0,n-mx-1]\)这段区间的标记情况是完全一样的(指对于\(i∈[2^c,n-1],j∈[0,n-mx-1],i=j+2^c\),\(i\)被标记当且仅当\(j\)被标记)

中间减去的那个段相当于合并,比如下图

image

我们的分治算法是将绿色和红色的段当成两个段的,但实际上应该当做一个段,这个时候就要分别减去绿色的贡献和红色的贡献,再加上绿色加红色的贡献就好了

实际上我们到跟二进制有关,最多只有\(60\)位,就用的数位DP做的,但是细节比较多。只不过记住,二进制的题目也有可能拿数位DP做(当然这之前不妨想一想分治)

标签:good,标记,subarrays,Number,贡献,mx,DP
From: https://www.cnblogs.com/dingxingdi/p/18345603

相关文章

  • LeetCode | 209 MinimumSizeSubarraySum
    分析本题中是找与target相符的最小连续的子数组和,找一个能够容纳target这么大的最小子区间。虽然本节引入了滑动窗口的概念,可我更偏好于,这是一只毛毛虫在数组上的移动,找到最小的容纳自己位置的地方target可看作毛虫本身的重量,数组中的每个元素值表示可承受的重量,right右指针看......
  • [USACO1.5] [IOI1994]数字三角形 Number Triangles
    传送锚点[P1216USACO1.5][IOI1994]数字三角形NumberTriangles-洛谷|计算机科学教育新生态(luogu.com.cn)题目[USACO1.5][IOI1994]数字三角形NumberTriangles题目描述观察下面的数字金字塔。写一个程序来查找从最高点到底部任意处结束的路径,使路径经过数字的和最......
  • Collecting Numbers II
    原题链接题解首先,对于数字i如果location[i]<location[i-1]那么遍历次数需要+1,否则不变。因此,对于交换的数字x,y而言,他们只能影响x-1,x+1,y-1,y+1的遍历次数,只需要考虑有限的几种情况即可(需要特判abs(x-y)==1的情况)。code #include<bits/stdc++.h>u......
  • C. Even Subarrays
    原题链接题解易得当区间异或和不为完全平方数的时候合法朴素做法:遍历所有区间,看看异或和是不是完全平方数优化:异或是可以交换运算顺序的,如果区间\([l,r]\)异或和为完全平方数,那么代表\(pre[r]\opluspre[l-1]==k\)其中k为完全平方数也就是说,\(pre[r]\oplusk==pre[l......
  • Collecting Numbers II
    原题链接题解如果一个\(k\),其前面没有出现过\(k-1\),那么回合数+1,我们令这样的数叫做断点因此交换两个数\(l,r\)不会影响\([1,l-1],[r+1,n]\)内的断点code#include<bits/stdc++.h>#definelllonglong#definelowbit(x)((x)&(-x))usingnamespacestd;constll......
  • SP8099 TABLE - Crash´s number table 题解
    题目传送门前置知识一般的积性函数|数论分块|莫比乌斯反演解法令\(n\lem\)。考虑莫比乌斯反演,推式子,有\(\begin{aligned}&\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{n}\operatorname{lcm}(i,j)\\&=\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{n}\frac{ij}{\gcd(i,j)......
  • 题解:[ABC363D] Palindromic Number
    提示特定位数的回文数数量是可以快速计算出来的,对于特定的位数\(n\),第一位由于不能有前导\(0\),共有\(9\)种选择,而从第\(2\)位到第\(\frac{n+1}{2}\)位都有\(10\)种选择(一个回文数完全由它的前半部分确定)。所以\(n\)位数中共有\(S(n)=9*10^\frac{n-1}{2}......
  • 2024牛客多校第四场F.Good Tree 挑战全网最详解
    好吧标题党了一回,但我相信有不少人被出题人的那句“手玩一下就知道了”无语住了像我这种憨憨一旦想偏了就救不回来了,于是困惑了好久,在雨巨的指导下彻底搞懂(此处大声谢谢雨巨,又有实力又会讲题又认真答疑每一个问题,呜呜呜我永远的姐)题意简单来说就是定义f(i)为树上i点到其他所有......
  • 取消pickle错误:magic_number = pickle_module.load(f, **pickle_load_args) _pickle.U
    当我尝试加载.pt文件时,我看到以下错误,str1='Dataset/ALL_feats_cgqa.pt'm=torch.load(str1)错误如下,File"/home/Storage1/pythonCodeArea/train.py",line21,inload_embeddingsm=torch.load(str1)File"/home/.local/lib/python......
  • CF585F Digits of Number Pi 题解
    Description给定长度为\(n\)的数字串\(s\)和长度为\(d\)的不含前导零的数字串\(x,y(x\ley)\)。求存在长度至少为\(\left\lfloor\frac{d}{2}\right\rfloor\)的子串是\(s\)的子串的数字串\(t\in[x,y]\)的数量。\(n\le10^3\),\(d\le50\),答案对\(10^9+7\)取......