算法考前必看

一级目录

先给他编译器一顿修理

在这里插入图片描述
先选择debug,之后再进行后续的调试
在这里插入图片描述
在这里插入图片描述
第二种规定c++11标准的方法:
在这里插入图片描述
首先要保证上面是Debug
然后勾选编译时加入以下命令,然后输入-std=c++11

设置代码补全:
在这里插入图片描述
划到最下面,然后修改为ctrl+enter
在这里插入图片描述
然后就可以在你输入到一半的时候,如果没有自动弹出来代码提示,可以调用ctrl+enter了
他可以提示如下信息:
在这里插入图片描述

修改主题:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

蓝桥对答案多一个空格或者回车等,不敏感

要将所有的样例都试全

拿到问题如果不是很明显的类型题,先暴力或者模拟,看看时间复杂度允不允许

多使用函数,多进行分布,这样有利于逻辑的清晰

好好审题,充分理解题意,磨刀不误砍柴工

使用cout来debug

在这里插入图片描述
如此代码,在每个循环步添加循环输出,且打印回车和分割线

注意:最后提交代码时将其删掉

一定要编译通过了再提交,哪怕是填空题,算出来答案也要把整体代码拷到编译器上编译运行一下再提交

填空题也有困难题,找自己能做的

关于longlong的强制转换

在这里插入图片描述
如果计算过程中出现int越界,那么就需要在等号右边计算的时候就加上(long long),之后看运算结果能不能回到int范围,如果回不到,那么等号左边的变量也要用long long 类型来接收,要是可以回到int,那么就可以使用int(建议都改为long long,因为算法对空间很宽松)

比较时尽可能用乘法,可以移项的移项

scanf过滤某模版读入关键数据

在这里插入图片描述

对于高精度 加减乘除 何时需要while除去前导0的问题

对于高精度 加减乘除 ,在做大 -> 小 的算法时,需要除去前导0
大 -> 小:
减法、除法
(且注意,while循环里是C.size() > 1 ,因为考虑到当C.size() == 1 && C.back() == 0时,答案一定是一个一位数:0,此时0就是答案,别除去)

数据范围和爆int

在这里插入图片描述
注意数量级前面的数,同时注意如果数据来到了1e8、1e9,且有求和、求积的操作时,注意要用LL类型

可以注意一下限制时间

在这里插入图片描述
虽然数据范围大,但是限制时间少,可以考虑暴力

对于那些数据组需要被记录下来,且要进行联系的数据,可以使用结构体

在这里插入图片描述
题目要将所有的数据输入之后,将每个数据组按照时间从小到大进行排序,所以,可以先使用结构体将其绑定,之后定义结构体类型的数组
在这里插入图片描述
然后输入各个部分的数据,之后sort排序时,要自己定义一个自定义函数,用于结构体变量之间的比较规则的制定,如上图,参数使用每个参与比较的元素的常量引用,返回小于就是从小到大排序

注意1

要想多个结构体成为全局变量,那么就要用到结构体数组,在定义时,不要typedef,因为他是重命名结构体变量的,直接struct{} S[]即可,或者typedef struct{} S; S snum[],也可以

struct S {

};
S a;
S s[N];

注意1

在这里插入图片描述

i 的灵活运用

for循环的 i 可以拿到外面,且用于for循环结束后的元素索引,以及将 i - 1,进行倒退,以拿到循环结束后的最新值)
在这里插入图片描述

输入n行不一定非要用while(n --)

在这里插入图片描述
for与while是等效的,甚至有的时候更适合输入数据(比如向数组中输入),所以,要视情况而定

关于N开多大的问题

我们在开N的时候,不能仅仅关注N所代表的是哪个数据,最保险的做法是,看所有的数据,找到数据量最大的那个,然后开他的空间大小+空余量,但是如果数据过多,或者过大,则要依据原理,原理是:我们的代码中,用到下标的变量的数据范围+空余量
在这里插入图片描述
我们如果仅关注N所代表的数据,那么就是草药的数量,即小于等于100,但是我们的代码中,用到了输入量 t ,做下标循环。那么这个时候,就要开T的范围,所以我们不能仅看N所代表的数据,还要看我们的代码中用到了哪些变量,那些变量的数据范围

报一些奇怪的错误时(比如显示winmain、源文件未编译等等)

1、main函数的main写错了
2、二维数组超出空间限制
在这里插入图片描述
在这里插入图片描述
全局二维最多开2万3 * 2万3

int取值范围、一二维数组空间上限、1s内的最佳数据量

int、long long的取值范围

-2147483648~2147483647(负1e9~1e9)
10的9次方,一共10位
有符号:2的32次方
无符号:-(2的32次方/2)~(2的32次方/2)-1

-922 3372 0368 5477 5808 ~ 922 3372 0368 5477 5807(负1e18~1e18)
long long 为10的18次方,一共19位
有符号:2的64次方
无符号:-(2的64次方/2)~(2的64次方/2)-1

数组空间上限

在这里插入图片描述
局部变量只能开50 0000,而全局变量能开2 0000 * 2 0000 = 4 0000 0000

我们主要针对全局来看,一维能开4 0000 0000,二维能开 2 0000 * 2 0000

c++1s内的数据量

10的7次方

关于int型数据乘除的细节

在这里插入图片描述
如果可以保证 a / b 中,a > b,那么这里使用int型数据就没啥问题

当题目要求计算的值要mod p时,某些计算过程中就要时刻记得mod p(前提是不影响最终的结果)

在这里插入图片描述
只要有一个二元运算,就mod p,不然可能会爆范围,同时在最前面加上(LL)

输入输出long long

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

对拍(用不用吧)

假如我们拿到一道题,我们可以会编写他的暴力代码,以及高级算法,但是暴力算法只能拿一部分的分数,而高级算法的时间复杂度是符合题目要求的,但是我们不能保证高级算法百分百正确,那么如何验证高级大概率是正确的呢,我们可以写出来暴力算法以及高级算法,然后在两边测多组数据,如果每次的结果都一样,那么高级算法大概率是对的

加速

在这里插入图片描述
应急使用

注意要放在main函数的最上面,首要操作

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值