首页 > 其他分享 >【菜笔cf刷题日常-1600】C. Good Subarrays(思维,前缀和)

【菜笔cf刷题日常-1600】C. Good Subarrays(思维,前缀和)

时间:2024-11-13 09:43:28浏览次数:3  
标签:菜笔 Good const tem int 1600 sum 序列 前缀

链接:Problem - 1398C - Codeforces

思路:

考虑每一个新加入的数对于原有序列(长度、数的总和)需求的变化:

如 1 的加入对于原有序列需求无变化;2 的加入需要原有序列长度增加 1 ;0 的加入需要原有序列数的总和增加 1 ;……

因此,将每个数减 1(如 1 变为 0 , 0 变为 -1 )来代表这个数的新加入对于原有序列的变化。

然后计算前缀和。如果其中有两个前缀和相同,说明在这两个中间的区间总和为 0,即存在符合要求的好子数组。

方法为使用map记录所有前缀和的出现次数,利用公式C(n,2)=n*(n-1)/2计算好子数组数量。注意当前缀和为 0 的时候还需要加上其本身的数量。

code:

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m,t,k,l,r,q,p,x,idx,res,cnt,sum,flag,maxx,minn;
const int N=200010;
const int MOD=1e9+7;
const int INF=0x3f3f3f3f3f3f3f3f;
int a[N],b[N];

signed main(){
	ios::sync_with_stdio(0);
	cin.tie(0),cout.tie(0);

	cin>>t;
	while(t--){
		map<int,int> mp;
		vector<int> b;
		cin>>n;
		int tem=0;
		for(int i=1;i<=n;i++){
			char o;
			cin>>o;
			a[i]=o-'0'-1;
			tem+=a[i];
			if(mp[tem]==0){
				b.push_back(tem);
			}
			mp[tem]++;
		}
		sum=0;
		for(int i=0;i<b.size();i++){
			tem=mp[b[i]];
			if(b[i]==0){
				sum+=(tem+1)*tem/2;
			}
			else if(tem>=2){
				sum+=(tem-1)*tem/2;	
			}
		}
		cout<<sum<<'\n';
	}
	return 0;
}

标签:菜笔,Good,const,tem,int,1600,sum,序列,前缀
From: https://blog.csdn.net/IamDickman/article/details/143695759

相关文章

  • 蓝桥杯真题——good-sequence(C语言)
     问题描述一个序列 [b1,b2,...,bm]若对于 2≤i≤m满足 bi≤b1,则称为好序列。现在给定 [a1,a2,...,an],求对于该序列的每一个后缀 [ak,ak+1,...,an](1≤k≤n)最少能划分成多少个好序列。输入格式第一行包含一个整数 n ,表示数组 a 的长度。第二行包含 nn 个......
  • 【菜笔cf刷题日常-1400】C. Team(构造)
    链接:Problem-401C-Codeforces思路:一道思维构造题。根据简单推导不难得出:当n>m+1||(n+1)*2<m时,前者为0最多的情况,后者为0最少的情况。当n>m时,结果一定为“010......010”当n<m时,先是“110110......”,然后当n=m时,是“101010......”。最后剩下的“0”和“1”单独......
  • 被复线远传节点机JR-IPAM-1600
    产品描述JR-IPAM-1600J是一款被复线远传节点机,通过传统双绞线电缆(被复线\网线\对数电缆\矿用电缆等),用户就可以快速组成一个高速的传输网、局域网。它具有传输速率高、运行稳定、快速安装部署的特点,设备特有的AUTO工作模式,能够自动侦测线路和远端设备情况,自动调整到最佳性能。......
  • CF1270 Good Bye 2019
    Dashboard玩构造玩的,服了。A拥有最大牌的必胜。linkB若相邻的差\(\ge2\)则有解,否则根据变化连续性一定无解。linkC加两个数,第一个数为之前所有数的异或和。加进来之后异或为0。第二个数为加完第一个数之后的和。linkD考虑\(k=n-1\)时,分别询问除去每个数之后的第\(......
  • 采样率从44100 Hz转化为采样率是 16000 Hz的音频的方法
    您好,您遇到的错误信息是:Audiofileformatdoesnotmatchexpectedformat.Expected:1channels,2-bytesamples,16000HzGot:1channels,2-bytesamples,44100Hz解释:预期格式:声道数:1(单声道)采样位深:2字节(16位)采样率:16000Hz实际格式(您的音频文件):声道数:1(......
  • Features of three electronic component platforms: Findchips, JLCPCB, and ICgoodF
    Thecharacteristicsofthreeelectroniccomponentplatforms:Findchips,JLCPCB,andICgoodFindareasfollows:Findchips:Powerfulsearchanddataintegrationfunction.Itcanaggregatedatafrommajordistributors.Userscansearchforinformationonse......
  • 亿配芯城(ICGOODFIND)教你外贸(海外)推广电子元器件芯片的专用词语
    在电子元器件行业,海外推广是企业拓展市场、提升竞争力的重要手段。而在海外推广过程中,恰当运用专用词语能够准确传达产品信息、吸引客户关注,提升推广效果。本文将详细介绍亿配芯城(ICGOODFIND)电子元器件海外推广中的专用词语。一、产品描述类专用词语IntegratedCircuit(集成电......
  • 文件同步文件备份软件 Goodsync 序列号
    GoodSync是一种简单和可靠的文件备份和文件同步软件。它会自动分析、同步,并备份您的电子邮件、珍贵的家庭照片、联系人,、MP3歌曲,财务文件和其他重要文件本地-之间的台式机,笔记本电脑,服务器,外部驱动器,以及WindowsMobile设备,以及通过FTP远程,网友的WebDAV等等。该版本已内置序......
  • 亿配芯城:电子元器件芯片大全 “ICgoodFind” 的寓意
    在当今科技飞速发展的时代,电子元器件就如同构建现代科技大厦的基石一般重要。而亿配芯城(ICgoodFind),无疑是这座大厦中一颗极为耀眼的明星。亿配芯城始终致力于为客户提供最为优质、全面的电子元器件产品和服务。我们的产品线极为广泛,涵盖了集成电路、分立器件、无源元件等众多......
  • 20AB-day3 Good Subsegments
    20AB-day3GoodSubsegments题意给你一个长度为\(n\)的序列\(a\),问有多少个子区间,满足\(\sum_{i=l}^r2^{a_i}=2^x\),其中\(x\)为非负整数。原题解第一个想法:若\(2^{a_l}+2^{a_{l+1}}+\cdots+2^{a_r}=2^x\),则\(x\le\max(a_l,a_{l+1},\cdots,a_r)+\logn\)。第二......