csp非零段划分(结尾有不超时解题,直接跳转看)

CSP202109-2 非零段划分 学习笔记 python(csdn)————程序.pdf CSP202109-2 非零段划分 学习笔记 python(csdn)————程序 立即下载

题目描述

A1,A2,⋯,An 是一个由 n 个自然数(非负整数)组成的数组。我们称其中 Ai,⋯,Aj 是一个非零段,当且仅当以下条件同时满足:
1≤i≤j≤n;
对于任意的整数 k,若 i≤k≤j,则 Ak>0;
i=1 或 Ai−1=0;
j=n 或 Aj+1=0。
下面展示了几个简单的例子:
A=[3,1,2,0,0,2,0,4,5,0,2] 中的 4 个非零段依次为 [3,1,2]、[2]、[4,5] 和 [2];
A=[2,3,1,4,5] 仅有 1 个非零段;
A=[0,0,0] 则不含非零段(即非零段个数为 0)。
现在我们可以对数组 A 进行如下操作:任选一个正整数 p,然后将 A 中所有小于 p 的数都变为 0。试选取一个合适的 p,使得数组 A 中的非零段个数达到最大。若输入的 A 所含非零段数已达最大值,可取 p=1,即不对 A 做任何修改。

输入格式

从标准输入读入数据。
输入的第一行包含一个正整数 n。
输入的第二行包含 n 个用空格分隔的自然数 A1,A2,⋯,An。

输出格式

输出到标准输出。
仅输出一个整数,表示对数组 A 进行操作后,其非零段个数能达到的最大值。

样例1输入

11
3 1 2 0 0 2 0 4 5 0 2

样例1输出

5

样例1解释

p=2 时,A=[3,0,2,0,0,2,0,4,5,0,2],5 个非零段依次为 [3]、[2]、[2]、[4,5] 和 [2];此时非零段个数达到最大。

样例2输入

14
5 1 20 10 10 10 10 15 10 20 1 5 10 15

样例2输出

4

样例2解释

p=12 时,A=[0,0,20,0,0,0,0,15,0,20,0,0,0,15],4 个非零段依次为 [20]、[15]、[20] 和 [15];此时非零段个数达到最大。

样例3输入

3
1 0 0

样例3输出

1

样例3解释

p=1 时,A=[1,0,0],此时仅有 1 个非零段 [1],非零段个数达到最大。

样例4输入

3
0 0 0

样例4输出

0

样例4解释

无论 p 取何值,A 都不含有非零段,故非零段个数至多为 0。

子任务

70% 的测试数据满足 n≤1000;
全部的测试数据满足 n≤5×10^5,且数组 A 中的每一个数均不超过 10^4。

  • 我暴力解题,结果超时,看看我的代码
import java.util.Arrays;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		int n=sc.nextInt();
		int[] nums=new int[n];
		int max=0;//寻找num中最大的一个数据
		
		for (int i = 0; i < nums.length; i++) {
			nums[i]=sc.nextInt();
			max=max>nums[i]?max:nums[i];
		}
		int count=0;
		
		for (int i = 1; i <=max; i++) {
			int temp=findCount(nums,i);
			count=count>temp?count:temp;
		}
		
		System.out.println(count);
	}

	//寻找当前有多少分组
	public static int findCount(int[] nums, int i) {
		int count=0;
		int balance=0;//表示当前没分组
		
		for (int j = 0; j < nums.length; j++) {
			if(nums[j]<i) {
				if(balance!=0) 
					count++;
				balance=0;
				continue;
			}
			
			else 
				balance++;
		}
		//最后一个分组要单独计算,不然结果会出错
		if(balance!=0)
			count++;
		return count;
	}
}
80MHz~100MHz频谱分析仪设计 由理论分析可知,经过乘法器后输出的信号为频率为w1+w2的高频信号和w1-w2的低频信号,除了想要采样的直流信号外,最小的信号频率为100kHz。因此,经过一系列推导可以得到该滤波器的元件C1,C2,C3,R1,R2的近似值分别为:C1=2.36nF,C2=32.1nF,C3=1.07nF,R1=1.39k,R2=2.84k。AK,此时的频率w2即为被测信号的频率,待测信号源电压幅度为,因此为了能达到直流采样的设计,我们将本振源的频率输出范围做成80~110 MHz,提高了题目的频率要求。 阅读详情

相关推荐

DrMOS电路仿真

将驱动电路与功率MOS集成化后既是DrMOS。把驱动芯片以及上下桥MOSFET封装在一起,这样每一相供电就有了单独的驱动芯片,并且这种高度整合的MOSFET可以通过更高的电流、发热比传统的MOSFET也小很多且更节能 自举升压同步BUCK高低侧栅驱动电路原理及仿真 ...

Srambler的博客 5039

非零段划分(CSP202109-2)

非零段划分 题目链接 题目描述:

m0_50435987的博客 3907

别急着做AI:FDE教你识别真需求,让AI真正落地

人工智能项目在落地过程中,经常出现业务方高喊“我们要做AI”,却说不清具体应用场景的现象。判断一个需求是否值得用AI实现,不能只看技术流行度,而要从问题出现频率、当前替代方案以及可量化业务价值三个维度展开验证。同时需要冷静比较规则引擎与大模型的边界:不是所有语义任务都要靠生成式模型,稳定、可解释且低成本的传统方案往往更具工程性价比。数据闭环也至关重要,缺乏历史样本与反馈回流路径的项目,很难在真实环境中持续优化。针对智能客服、合同审查或企业知识库等典型场景,可借助人机协同与最小代价的用户验证,逐步筛除伪需求,

weixin_42624889的博客 341

CSP:202109-2 非零段划分(c++)

CSP:202109-2 非零段划分 题目描述 A1,A2,⋯ ,AnA_1, A_2, \cdots, A_nA1​,A2​,⋯,An​ 是一个由 nnn 个自然数(非负整数)组成的数组。我们称其中 Ai,⋯ ,AjA_i, \cdots, A_jAi​,⋯,Aj​ 是一个非零段,当且仅当以下条件同时满足: 1≤i≤j≤n1 \le i \le j \le n1≤i≤j≤n; 对于任意的整数 kkk,若 i≤k≤ji \le k \le ji≤k≤j,则 Ak>0A_k > 0Ak​>

记录日常学习 1102

萤石摄像头批量下载视频后FFmepg拼接

本文描述萤石摄像头,如何批量下载视频,然后把视频片段拼接为一个完整的视频,亲测有效。有问题,可以下面留言

烤鱼哥哥的博客 1202

ADS负载牵引仿真避坑指南:从零开始搞定Loadpull模板设置

本文是一份针对ADS负载牵引仿真的深度避坑指南,详细解析了Loadpull模板从初始化配置到结果解读的全过程。文章重点阐述了如何根据设计目标灵活设置扫描圆、采样点等关键参数,以解决仿真不收敛、结果不完整等常见问题,并指导读者在功率与效率之间做出理性权衡,最终提取出用于匹配网络设计的最优负载阻抗。

weixin_29234423的博客 597

CSP-202109-2-非零段划分

因此,整个程序的总时间复杂度为 O(maxElem * n),这里 maxElem 是数组中的最大值,n 是数组的长度。这段代码的目的是在给定一个由自然数(非负整数)组成的数组后,通过选择一个适当的正整数 p,将数组中所有小于 p 的数变为 0,从而使得数组中非零段的数量达到最大。一个非零段开始于一个非零元素,该元素要么是数组的第一个元素,要么其前一个元素为零。在每一个 p 的值下,我们又对数组进行了两次遍历(一次是将小于 p 的值置为 0,另一次是计算非零段的数量),每次遍历的时间复杂度为 O(n)。

fzy2003的博客 1348

Win11下WSL2安装Ubuntu22.04避坑指南:从镜像源到C++环境配置

本文提供了一份详细的Win11下WSL2安装Ubuntu22.04的实战避坑指南。内容涵盖从WSL2核心安装、自定义安装路径,到更换国内镜像源以解决更新缓慢问题,并一站式配置完整的C++开发环境(包括GCC、CMake、vcpkg等),最后分享提升开发体验的进阶技巧,助你在Windows上打造高效的Linux开发工作站。

weixin_29260291的博客 562

csp2021-09-2 非零段划分

CSP真题解 非零段划分 文章目录CSP真题解 非零段划分前言一、70分,超时二、差分思想前缀和差分差分是什么 前言 一、70分,超时 #include <iostream> #include <algorithm> #include <bits/stdc++.h> using namespace std; const int N = 15; int a[N], b[N],c[N]; int main() { int n,nmax=0,mmax=0,

若宸的博客 3019

Linux 下安装 openjdk 17【详细步骤】

JDK17,安装教程。

甘蓝的专栏 7506

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

csp非零段划分

csp第二题

heliotrope_jin的博客 344

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

【csp202109-2】非零段划分(c++100)

当将一个非0数变为0时,如果它在头,右边是0,那就少一个非0段,右边不是0,那就多一个非0段;如果在中间,左右两边是否都为0或都不为0,情况同上。从202012开始的第2题都很注重空间换时间,这道题笨方法是会循环两遍的,1.0s肯定超时,那要思考之前求取的结果有没有用,怎么用。知道一个数的位置不一定非要遍历,我们可以把它记下来,用一个二维数组,纵坐标就是这个数,里面存的是这个数在这个数组中出现的位置。第一次只拿了50分,我看好多人拿的都是70分,结果一看,空间使用258.9MB,吓一跳,但思路没有错。

weixin_51305111的博客 796

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

CSP非零段划分

差分应用

weixin_50953388的博客 504

csp 202109-2 非零段划分

题目描述 解题思路:首先先对输入的数组进行去重,得到不重复的数组a,并在数组a最开始和最后添加0元素。然后对a中所有非零元素维护一个的map,其中key为a中所有非零元素递增排列,value为该元素对非零段的影响值(即,若a[i]a[i+1]则去掉a[i],非零段数目将-1。由于去重,则不存在等于情况)然后初始化dp0为初始非零段数目,则dp[i]=dp[i-1]+map中该元素对非零段的影响值。i...

weixin_45797563的博客 393

2021-9-2非零段划分(前缀和最简解法)(c/c++实测满分)

用前缀和与差分实现非零段划分的最简单解法。

qq_52622503的博客 1314

CCF CSP 2021-9-2 非零段划分 C语言100分

CCF CSP 2021-9-2 非零段划分 C语言100分 非零段划分 代码长度595B C语言 正确 100分 耗时46ms 空间使用6.246MB 2021-11-06完成 应该会慢慢更新,0算法基础极限挑战今年12月得CSP。坚持每天一道 题目描述 A1,A2,…,An是一个由 n 个自然数(非负整数)组成的数组。我们称其中 Ai,…,Aj 是一个非零段,当且仅当以下条件同时满足: ·1≤i≤j≤n; ·对于任意的整数 k,若 i≤k≤j,则 Ak>0; ·i=1 或 Ai-1=0; ·j=n

JY_0329的博客 2737

【CSP】2021-09-2 非零段划分 索引+递推/差分+前缀和

记录了本人刷csp过程中的发现的错误、解题过程和收获,希望会你对解题和学习有一定的帮助。

m0_65708726的博客 843

CSP—2021.09.1数组推导(2021.10.07)

题目描述 是一个由 个自然数(即非负整数)组成的数组。在此基础上,我们用数组 表示 的前缀最大值。 如上所示, 定义为数组 中前 个数的最大值。 根据该定义易知 ,且随着 的增大, 单调不降。 此外,我们用 表示数组 中 个数的总和。 现已知数组 ,我们想要根据 的值来反推数组 。 显然,对于给定的 , 的取值可能并不唯一。 试计算,在数组 所有可能的取值情况中, 的最大值和最小值分别是多少? 输入格式 从标准输入读入数据。 输入的第一行包含一个正整数 。 输入的第二行包含 个用空格

idiot_csdn的博客 734

【CSP试题回顾】202109-2-非零段划分(优化)

在解决特定子序列计数问题中,差分数组技术被用来标记数列中的“峰”和“谷”。首先,通过处理输入并去除重复元素,准备数列数据。然后,构建一个差分数组来记录数列中每个元素相对其相邻元素的变化。对于数列中的每个局部最大值(“峰”),在差分数组对应位置减一;对于每个局部最小值(“谷”),在差分数组对应位置加一。最后,通过遍历差分数组,累加变化量,来找出满足条件的子序列总数。这种方法能有效处理数列的区间更新问题,适用于快速计算出数列中满足特定条件的子序列数量。

fzy2003的博客 772

CCF/CSP:2021-09-2 非零段划分(差分数组的理解)

所以初学者很难想到使用差分数组。

weixin_73906822的博客 338

csp2021-09-02非零段划分——差分数组

1.如何求非零段个数,其前一个数为0,本身不是02.暴力破解,枚举每个数组中的数。

weixin_53908842的博客 363

csp 21-09-01 数组推导 & 2 非零段划分

我之前迷糊的点好像是在,为什么这个点可以单独判断左右两个就可以确定下降到这个高度的情况,因为我觉得根据题目,这时候是要对整个数组进行改变然后计算的,啊,还是没有把握到这个方法精髓,精髓就是这里,只需要记录下来高度到达这个的时候,会造成怎样的变化,不用去计算整体的岛屿数。记录当前的最大值,与每次接收到新值对比,如果相等,则说明,A数组中目前为止的最大值没变化,sum_max+上最大值,sum_min加0,如果不相等,则说明最大值变化了,两个sum都加上新值,并且更新max。,好,俩都不会,学一下吧。

weixin_45829101的博客 423

csp21-09-2非零段划分(差分版)

csp21-09-2非零段划分差分版

m0_69397323的博客 328

leetcode刷题66.加一

leetcode刷题 题目描述:给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。 示例 1: 输入: [1,2,3] 输出: [1,2,4] 解释: 输入数组表示数字 123。 示例2: 输入: [4,3,2,1] 输出: [4,3,2,2] 解释: 输入数组表示数字...

weixin_43022263的博客 219

CSP202109-2非零段划分

看其他人写的题解的时候,看到了有人用海岛来解释这个问题,觉得很有意思,在这我也试试,嘿嘿。 p可以理解为海平面 数组的每个元素可以理解为图上的黑点

qq_60899598的博客 1879
上一篇: 枚举法解决 数的分解
下一篇: 领域均值java解题【一维前缀和思路】
@@老胡
博客等级 码龄7年 291粉丝 184原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值