首页 > 其他分享 >abc146e-ti-jie

abc146e-ti-jie

时间:2024-05-08 18:27:08浏览次数:29  
标签:jie int sum abc146e ans mp ti 区间

abc146e

思路

由题,$k\mid (a_l+a_{l+1}+...+a_{r-1}+a_r)-(r-l+1)$,可以转换为平均每个数在模 $k$ 下都贡献了 $1$。所以对区间每个数都减 $1$,则长度为 $len$ 的区间和减了 $len$,此时如果区间和为 $k$ 的倍数则符合条件。

预处理对 $k$ 取模的前缀和 $sum_i$,如果 $sum_{l-1}=sum_r$,则区间 $[l,r]$ 符合条件。又因为 $r-l+1<k$,所以 $r-(l-1)+1\leq k$。

所以 $i$ 的 $sum_i$ 对答案的贡献为 $i-k+1\leq j\leq i-1$ 中与 $sum_i$ 相等的 $sum_j$ 的个数。

$sum_i$ 值域大,不能用桶处理。用 map 处理,删除 $sum_{i-k}$ 过期的,统计答案,加入 $sum_i$。

注意最开始的 $sum_0=0$ 也要算。

code

int n,k,a[maxn];
map<int,int> mp;
int ans;

int T;
signed main(){
//	freopen(".in","r",stdin);
//	freopen(".out","w",stdout);

	n=read();k=read();
	mp[0]++;
	for(int i=1;i<=n;i++){
		a[i]=read();
		a[i]+=k-1;a[i]%=k;//a[i]+k-1=a[i]-1,在模 k 时。
		a[i]+=a[i-1];a[i]%=k;
		if(i>=k)mp[a[i-k]]--;
		ans+=mp[a[i]];
		mp[a[i]]++;
	}
	printf("%lld\n",ans);
}

标签:jie,int,sum,abc146e,ans,mp,ti,区间
From: https://www.cnblogs.com/yhddd/p/18180549

相关文章

  • 240229-mo-ni-sai-t1-xu-lie-sequence-ti-jie
    P4778240229模拟赛T1序列(sequence)的第二问。题意求一个排列每次交换两个位置变成$1\dotsn$的方案数。思路分开考虑每个环。设$f_i$表示大小为$i$的环的答案。每交换一次就将一个环分为两个环。枚举分成的较小的一边是什么,乘两边单独的方案数,两边独立乘一个组合数,......
  • 20244-zuo-ti-ji-lu
    4.7CF1648D设$dp_i$为从$(1,1)$到$(2,i)$的最小代价。答案为$\maxdp_i+s3_n-s3_{i-1}$。$$dp_i=max(\max_{l_x\lei}dp_{l_x-1}+s2_i-s2_{l_x-1}-w_x,\max_{l_x\lej\lei}s1_j+s2_i-s2_{j-1}-w_x)$$前面线段树维护dp值,按转移顺序区间max,单点查。后面从后往前枚......
  • 20243-zuo-ti-ji-lu
    二月没写3.01P3379先考虑完全二叉树的lca求法。中序遍历分配编号。设第$k$位是$u\oplusv$最左边的$1$,则$lca(u,v)$是$u,v$的$k$位以左、第$k$位是$1$,$k$位以右是$0$。将树上lca转到完全二叉树上。先序遍历,设$h_u$表示$dfn_u$的末尾连续$0$数,$l_u$......
  • 20241-zuo-ti-ji-lu
    1.08CF235C求每个询问串的所有循环同构在主串中出现的次数总和。向后遍历可做,现在需要删掉开头。删除开头$l$减$1$,如果$l=len_{lnk_p}$,那$p$就不能再在这个节点,$p=lnk_p$。1.09P4094子串$s[a...b]$的所有子串和$s[c...d]$的最长公共前缀的长度的最大值。二分答案......
  • cf433c-ti-jie
    CF433C思路出于习惯,调换$n$和$m$,$n$为数组长度,$m$为值域。考虑枚举被替换的$a_i$。枚举值域$1$到$m$的权值$x$。每个权值为$x$的点$a_i$的贡献是$\mida_i-a_{i-1}\mid+\mida_i-a_{i+1}\mid$。由于$a_i$被更改,贡献会随之变化,与之有关的是所有$a_i$的左......
  • cf396c-ti-jie
    CF396C思路对于一个点维护$b_i=a_i-a_{fa_i}$。对于操作一,等价于$b_u$加$x$,$u$的子树不含$u$的每个点和父亲的差都减$k$。对于操作二,等价于从根到$u$路径上的$b_x$的和。同P3178,子树加,路径查,树剖加线段树。codeintn,q;inthead[maxn],tot;structnd{ intnxt......
  • at_joi2020ho_b-ti-jie
    AT_joi2020ho_b另,这道题也是P6878,数据应该是强一些。思路枚举起始的位置$i$,显然$c[i]=J$,即枚举$J$的位置。为了使操作三删除中间的字符更少,问题转换对于为从$i$起的最短的包含一个$k$阶字符串的字符串的长度。有点绕。那么从$i$位置起,向后找$k-1$个$J$,记录位置......
  • at_dp_j-ti-jie
    AT_dp_j思路期望dp。设$dp_{i,j,k,l}$表示当前有$0,1,2,3$个寿司的盘子数有$i,j,k,l$个时的期望次数。显然MLE。但可以发现$i+j+k+l=n$,所以可以去掉一维。设$dp_{i,j,k}$表示当前有$1,2,3$个寿司的盘子数有$i,j,k$个时的期望次数。首先有$dp_{0,0,0}=0$。......
  • a-story-of-the-small-p-ti-jie
    「2020-2021集训队作业」AstoryofTheSmallP题意给定$N,m,k$,求有多少个正整数序列h满足:h的长度$n$满足$1\leqn\leqN$。$1\leqh_i\leqm$。正好存在$k$个$i$满足$h_i<h_{i+1}$。答案模$998244353$。$2\leqN,m,k\leq2^{19},(N-k+1)\timesm\l......
  • arc162f-ti-jie
    arc162f思路$a_{x1,y2}\timesa_{x2,y2}\leqa_{x1,y2}\timesa_{x2,y1}$改为所有$a_{x1,y1}=a_{x2,y2}=1$,都有$a_{x1,y2}=a_{x2,y1}=1$。观察发现,第$i$行$a_{i,j_1}=\ldots=a_{i,j_{num}}=1,(j_1<\ldots<j_{num})$,第$ii,(ii>i)$行能取$1$的位置是$[1,j_1-1]$和......