分享一些算法开局技巧(C++)

目录

一、万能头文件

二、一些宏定义操作

三、提前定义好一些常用的值

四、快读

五、一键获取题目的案例数据

六、一键生成代码模板

总结:个人心得


一、万能头文件

一般算法需要用到各种头文件,但是万能头文件包括了绝大多数的头文件,能缩减一些代码量。

但是也有一点副作用,由于头文件一下包含太多,每次在编译的时候都会卡顿一秒左右。对程序本身的运行时间是不影响的。

#include<bits/stdc++.h>

如果确实嫌弃会卡顿一下,这里给出一些常用的头文件:

#include <iostream>  
#include <cstring>
#include <iomanip>
#include <vector>   
#include <algorithm>
#include <cmath>   
#include <string>   
#include <array>  
#include <fstream>   
#include <map>
#include <unordered_map>
#include <set>
#include <unordered_set>
#include <queue>    
#include <stack>    
#include <cstdlib>   

二、一些宏定义操作

例如 vector的插入操作需要用到 push_back( )很长,所以可以用pb来代替。

#define LL long long  
#define PII pair<int,int>
#define fr first
#define sd second
#define pb push_back
#define endl '\n'
  • LL 代替 long long
  • PII  代替 pair<int,int>
  • fr,sd  代替 如map  pair的两个关键字
  • endl 代替 '\n'

三、提前定义好一些常用的值

const int N=2e5+10;
const int INF=0x3f3f3f3f;
const int MOD = 998244353;
int dx[4]={0,1,0,-1},dy[4]={1,0,-1,0};
  • N 一般是开辟题目要求的数组空间,大多数题都在2e5的范围内,如果更大则要修改
  • INF表示一个1e9的数,一般需要用到一个很大的数的时候就可以用它,但是它不会像INT_MAX那样不能再加任何数(会爆int),LL 级别的可以用 0x3f3f3f3f3f3f3f3f表示
  • MOD在题目答案过大时会给出模的数,998244353或者1e9+7
  • dx[4]和dy[4]在格点图上表示上下左右四个方向,更方便如bfs遍历,也可以增加到8个方向

四、快读

为了追求算法题的速度,关闭C++ 的同步流,以达到加快读入输出的目的,虽然不会在本质上影响最终时间,但是可以快一些。

注意:使用这个之后就不能用 scanf printf 输入输出了,会造成混乱

这三句话放在main()函数里就可以

ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);

五、一键获取题目的案例数据

这里推荐一个网页小插件(拓展),这样在每次在读题目前就点一下网友右上角的加号,就可以拿到案例的数据了。

 

当然还需要配合编译器的插件, 这里我用的是Vs Code

步骤:

1、开始做题的时候点击网页的绿色加号,等待大概2秒(需要提前打开vs code)

2、vs code 这里就自动弹出需要的语言文件,这里我一直都是手动点,不太懂怎么设置成默认的

3、开始写代码,左侧就是题目的数据,点击绿色箭头运行,如果通过就是pass 没通过就是 fail

六、一键生成代码模板

在平时的网络赛,可以将一些解决一类问题的代码整理好,在后续可以一键呼叫(在正式比赛中千万不要用这个!会违规)

这里依然是以Vs Code来说明,sublime或者其他的可以具体百度

1、点击vscode 左下角的齿轮 —>用户代码片段

2、点击新建代码片段

3、 生成这样的一个文件,红色框框内的是没用的,可以直接删掉。剩下的部分把注释取消了。

 4、这里详细说明一下

  • scope: 后面的两个地方需要修改成你需要的语言
  • prefix: 这里是需要的唤醒词,比如这个快速幂 只需要输入qmi 就可以一键搬出来
  • body: 这里是你需要保存的代码,注意需要以下面这种格式封装起来
  • description: 只是对代码的描述,不重要,可以不改
  • !!!都弄好后一定要 ctrl + s 保存,不然就叫不出来

总结:个人心得

这些是我认为使用频率最高的几个技巧,除此之外还有很多,但是这些都只是服务做题的,对解题本身没有任何帮助,重点学习算法本身以及提升思维能力才是硬道理,不能一直追求一些捷径。


gg,推荐课程:https://xxetb.xetslk.com/s/kNPSd

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值