CCF-Csp算法能力认证,21.09.1数组推导(C++)含解析

前言

之前考csp只考了两百有些失败,所以打算好好刷刷题来提高一下,重学c++也是为了使用c++编程。

CSP认证也算一个很有含金量的证书,很多学校考研就包括了CSP认证达到一定分数免机试的条例,当然 200不行。最近看了很多讲csp的博客,主要推荐都是刷题为主,算法能力是经验累积。

也有推荐书目的,在这里也推荐那一本《算法笔记》(胡明),需要PDF的话,链接如下

「链接:https://pan.xunlei.com/s/VNvz4BUFYqnx8kJ4BI4v1ywPA1?pwd=6vdq# 提取码:6vdq”复制这段内容后打开手机迅雷App,查看更方便」

考试时可以使用的编译器一般只有vscode和devc++。

还有就是考试最后几分钟已经不能提交代码了,前面有弄好的一定要早点提交。有分总比没分好。一般都可以在ccf,csp官网上去练习(有模拟考试)。

还有pta等网站,都有实时测评。

考试中也是提交完成后就会得到成绩或者编译错误超时等信息。

基本情况都和模拟考试的十分相似,有很多次提交机会,基本都是够用的。

还有就是该考试和之前学的数据结构有千丝万缕的联系。

最后就是就业的面试题中有很多类似的,我感觉刷算法题也是一种对数学能力的练习。

总之就是很有用的,但是很多网上的题目只有答案没有解析,像我这种菜鸟根本看不懂。

还有很多人使用stl,相对高级的算法,还有些实测不能跑出来,我的技术太差也不能修改。

总之网上的还是对小白不友好。

所以像我这样没啥实力的选手的解决方案或许能小白选手接受。

也希望有大神能够提供改良意见,敬礼!

---------------------------------------------------------------------------------------------------------------------------------

题目

【题目描述】

【输入格式】

【输出格式】

【样例 1 输入】

6
0 0 5 5 10 10

【样例 1 输出】

30
15
 

【样例 1 解释】

【样例 2 输入】

7
10 20 30 40 50 60 75

【样例 2 输出】

285
285

【样例 2 解释】

【子任务】

思路分析:

本题的思想比较简单,

当一个不减数列的后一个值大于前一个值,那么一定a[i]就等于最大值b[i]。

如果不是大于前一个值,下一个值的最小值可以是0,最大值可以是之前的最大值。

下面是代码。

#include <bits/stdc++.h>//万能头文件 
using namespace std;


int main() {
	int n=0;//n是B集合的数字个数 
	int resultmin=0;//存储最小结果 
	int resultmax=0;//存储最大结果 
	//const int N=10000;
	cin>>n; 
	
	int b[n];
	//输入并计算 
	for(int i=0;i<n;i++){
		cin>>b[i]; 
	} 
	resultmin=b[0];
	resultmax=b[0];//初始值 
	
	for(int i=0;i<n-1;i++){
		if(b[i]<b[i+1]){//如果b变大了,说明a[i+1]=b[i+1] 
			resultmin+=b[i+1];
			resultmax+=b[i+1];
		}
		else{
			resultmax+=b[i];//最大值就设a[i+1]=b[i] 
			//最小值就默认a[i+1]=0 
		}
	}
	
	cout<<resultmax<<endl;
	cout<<resultmin<<endl;

	return 0;
}

  • 11
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值