蓝桥杯上分宝典(基础篇)

        众所周知,蓝桥杯是一个几乎妇孺皆知的比赛,所谓打竞赛不打蓝桥杯,就像玩游戏不玩原神,热度高,参与的人多,且简单,但要是想稳定拿奖还是要有一定的技巧的。下面我将把我对蓝桥杯的理解分享一下。

        一、时间复杂度

        通常来说,不出意外的情况下,蓝桥杯中编程题的时间限制一般都为1s,而评测系统能在1s内进行10^8次数的运算,换算一下也就是说最多能够运行一个for(int i=1;i<=100000000;i++)这种程度的运算,这只是O(n)的情况,若是O(n^2)的话就只能是i<=10000,这就是说需要在编写程序的时候注意一下数据范围,通常来讲,最大数据为1e8的就需要起码是个O(n)的时间复杂度,如果真是这种情况,也需要注意一下常数优化以及读入优化等问题,由于考虑到大部分人只用c语言,所以大可不必太关注读入优化,如果是用c++,在读入数据较多时,建议用scanf进行读入,cin的速度较慢,输出的时候也要用一下printf,或者加cin.tie(0)或者ios::sync_with_stdio(false)但是较为麻烦,所以一般建议直接scanf和printf。

        不过对于蓝桥杯来说,由于是oi赛制,是按点给分,就算不能完全的做对一道题,也会根据通过的样例点进行给分,在官网刷题的时候估计也能看到几乎每道题后面都会有一个某某数据小于多少多少,占总样例的百分之几。从这点来看,之所以蓝桥杯比acm简单,其中的一点就是因为就算这题不全对也能得分,这也就是为什么蓝桥杯好获奖,而不是说是因为蓝桥杯有填空题,也能由此可见,填空题少了对获奖是有一定的帮助的,而且由于蓝桥杯没有报错提示,也就需要在做题时认真一些,避免出现简单错误。

        二、模版输入输出

        从某些情况下来说,scanf和printf是十分强大的,不只是因为速度快,同时在处理读入数据以及输出样例时也较为方便,例如如果说要输出一个保留三位数的小数a时,如果用cout,就需要写cout<<fixed<<setprecision(3)<<a,而如果是printf,则只需要写printf(“%.03f,a),如果要求取整四舍五入,则需要加上0.5,因为c语言一般都是向下取整。

        另一个方面,在考时间问题时,往往需要补齐前缀零,比如如果有这么一个时间是6:03,题目让都输出两位,不足两位的用0补齐,也就是说要输出一个06:03,此时就要用printf("%02d:%02d",6,3);,这也是printf的一个强大之处。

        同时,scanf也有一些常用的功能,如果题目的读入为it is 6:03 clock,这时候如果想要获取6和3,就可以规定读入样式,scanf("it is%d:%d colck",&a,&b);,运行结果如下

        三、全局变量

        在做编程大题时,通常会使用到数组,而在大一的c语言课程中对全局变量的介绍并不多,但在编程中是很重要的一部分,当申请数组时,全局变量的数组往往可以开的很大,但具体是多长我也不清楚,而且开在main函数内的数组不会很长,如果开在main函数内,往往会造成数组长度不够,而造成越界问题,很少定义在main函数内部,而且所有的全局变量的初始值均为0,而不是随机数。

        四、多组输入

        多组输入问题一般不会专门考,因为这只是一些基本知识,但是还是要提一下,有时候题意会说输入0时停止读入,或者直接说多组样例,同时没说有几组数据的情况下,所以这就需要结合while循环,如果说读入0结束,则可以

        如果什么都没说,则

        五、变量类型定义

        变量类型定义:一般来说,题目里都会给定某个变量的取值范围,有的是10^8,或者10^16,

一般遇到10^8的变量都会定义成int类型,10^16一般都是long long类型,如果实在拿不准就都定义为long long,具体的范围可以上网搜索一下,如果还大的话可以定义为unsigned long long,或者直接用高精度算法,而通常对于浮点数,也就是小数,都会定义为double,题意里若出现实数,则统一定义为double。

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值