目录
前言
蓝桥杯全国软件和信息技术专业人才大赛,是由工业和信息化部人才交流中心举办的全国性IT学科赛事。全国1200余所高校参赛,累计参赛人数超过40万人。蓝桥杯大赛连续两年被列入中国高等教育学会发布的“全国普通高校学科竞赛排行榜”,是高校教育教学改革和创新人才培养的重要竞赛项目。对大学生综合评测,奖学金评定,升学考研都有一定助益。
但是如何进行蓝桥杯赛事,系统地了解基本算法,然后多练多写!!!
下面就对两道真题进行讲解和完整代码展现。
一、前缀和习题
习题- [蓝桥杯 2022 省 A] 求和
题目链接
P8772 [蓝桥杯 2022 省 A] 求和 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
题目描述
题目讲解
首先,拿到本题后,直接暴力运算,一定会超时!!!
那么,我们要怎么理解本题呢?
我们先看一下:
这就是输入样例的计算的公式,我们发现当
小时,我们可以暴力模拟,但是
非常大该怎么办呢?
我们继续往下思考,上面公式中有共同系数,可以提取共同系数得到:
诶呀!!!发现了神奇的东西,我们扩大:
哈哈哈,发现了求区间和,这不是前缀和嘛!破局了!
如果不理解什么是前缀和,请看:基本算法-前缀和 模板+习题-CSDN博客
我简单解释一下:
它的前缀和
等于
的和,由此可以得到
可以写出代码了吧,加上一个for循环就好了。
完整代码
#include<bits/stdc++.h>
using namespace std;
const int N=2e5+10;
long long a[N],s[N];
int main(){
long long n,m=0;
cin>>n;
for(int i=1;i<=n;i++) scanf("%d",&a[i]),s[i]=s[i-1]+a[i];
for(int i=1;i<n;i++){
m+=a[i]*(s[n]-s[i]);
}
cout<<m<<endl;
return 0;
}
二、模拟习题
习题-[蓝桥杯 2022 省 B] 刷题统计
题目链接
P8780 [蓝桥杯 2022 省 B] 刷题统计 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
题目描述
题目讲解
本题题意很好理解,但题目我感觉难在代码!
还是简单说一下题目吧,周一到周五做a题,周六到周日做b题,最后计算出在第几天做题数目大于等于n。
这里说一下我代码卡在那里了,函数是向上取整,当数据量过大时,直接加上
会结果出现错误!!!我就是这里卡到了(莫名其妙多了2,百思不得其解),以为思路错了(其实并没有),大概原因应该是数据过大,直接计算会出错。还有一个小点!!!注意了!
型或
型数据类型,直接向下取整,作用类似与
。呃呃呃,还有一个小点,用
时,里面除数要乘上一个小数(1.00),要不然它几乎没什么作用,不会向上取整。
完整代码
#include<bits/stdc++.h>
using namespace std;
int main(){
long long a,b,n,c,d,num,week,t;
cin>>a>>b>>n;
c=a*5+b*2;
week=n/c;
num=n%c;
if(num<=5*a){
d=ceil(num*1.00/a);
t=(week*7)+d;
cout<<t<<endl;
}
else{
num-=(a*5);
d=ceil(num*1.00/b);
t=week*7+5+d;
cout<<t<<endl;
}
return 0;
}
总结
结束了!!!是不是还有点意犹未尽?
没有嘛?!行吧,记住了,打算法比赛要先心中有基本算法知识,在多去刷题!这就叫有的放矢!
哈哈哈,其实我也比较菜,大家一起努力吧,3月4号蓝桥省赛!
看完了?给作者一个赞和收藏,嘿嘿,要不顺手点个关注?感谢友友们交流,以及欢迎友友们评论!