前言
之前考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;
}