首页 > 编程语言 >分享一些算法开局技巧(C++)

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

时间:2024-07-09 09:57:38浏览次数:18  
标签:开局 头文件 int 代码 一键 C++ 算法 include define

目录

一、万能头文件

二、一些宏定义操作

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

四、快读

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

六、一键生成代码模板

总结:个人心得


一、万能头文件

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

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

#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

标签:开局,头文件,int,代码,一键,C++,算法,include,define
From: https://blog.csdn.net/2301_77671421/article/details/140224738

相关文章

  • 算法题里存储数据的方式(C++)
    这里分享的不是如邻接矩阵邻接表的算法存储,仅仅是一些特殊数据的简易存储,以方便操作1、map<int,vector<int>>mp当给出很多串数字,每一串数字都需要单数放一个一维数组里,但是开辟一个二维数组内存又过大,并且不好操作时,可以用map<int,vector<int>>mp来存储,这样就可以单独操......
  • C++ 保障异常安全的手段和措施
    在C++中,保障异常安全是编写健壮、可靠代码的重要方面。异常安全确保程序在遇到异常时能够正确处理,不会导致资源泄露或数据不一致等问题。以下是一些保障C++异常安全的手段和措施:1.RAII(资源获取即初始化)RAII是一种在C++中广泛使用的资源管理技术,它通过对象的构造函数获取......
  • 计及需求响应的改进灰狼优化算法求解风、光、柴、储容量优化配置(Matlab代码实现)
     ......
  • 【C++修行之道】string
    一.C语言中的字符串C语言中,字符串是以'\0'结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列的库函数,但是这些库函数与字符串是分离开的,不太符合OOP的思想,而且底层空间需要用户自己管理,稍不留神可能还会越界访问。二、标准库中的string类(了解)......
  • 【深度学习】探讨最新的深度学习算法、模型创新以及在图像识别、自然语言处理等领域的
    深度学习作为人工智能领域的重要分支,近年来在算法、模型以及应用领域都取得了显著的进展。以下将探讨最新的深度学习算法与模型创新,以及它们在图像识别、自然语言处理(NLP)等领域的应用进展。一、深度学习算法与模型创新新型神经网络结构Transformer及其变种:近年来,Transformer......
  • C++入门(C语言过渡)
    文章目录前言一、C++关键字二、命名空间三、C++输入&输出四、缺省参数五、函数重载六、引用七、inline八、nullptr总结前言C++是一种通用的、高级的、静态类型的编程语言,它在20世纪80年代由丹尼斯·里奇创建的C语言基础上发展而来。以下是C++发展的一些重要里程碑。......
  • ScreenAI ——能理解从信息图表到用户界面的图像和文本算法解析
    概述论文地址:https://arxiv.org/pdf/2402.04615.pdf信息图表(图表、示意图、插图、地图、表格、文档布局等)能够将复杂的数据和想法转化为简单的视觉效果,因此一直以来都被视为传播的重要元素。这种能力来自于通过布局和视觉线索使信息直观易懂。在当今日益数字化的世界中,移......
  • 算法金 | 时间序列预测真的需要深度学习模型吗?是的,我需要。不,你不需要?
    大侠幸会,在下全网同名「算法金」0基础转AI上岸,多个算法赛Top「日更万日,让更多人享受智能乐趣」参考论文:https://arxiv.org/abs/2101.02118更多内容,见微*公号往期文章:审稿人:拜托,请把模型时间序列去趋势!!使用Python快速上手LSTM模型预测时间序列1.时间序列预测......
  • 基于opencv + GPU cuda的光流算法demo
    该demo来自learnopencv.com网站,是作为opencvcuda模块的启蒙示例。看来这是一个简单的例子,但是由于从未接触过opencvcuda图像处理,我个人仍感觉比较新颖和有趣,特别是运行效果很惊奇,这里和大家一起学习解读以下。想看一手内容可以在网络直接搜索GettingStartedWithOpencvcuda......
  • 代码随想录算法训练营第27天 | 122.买卖股票的最佳时机 II 55. 跳跃游戏 1005.K次取反
    122.买卖股票的最佳时机II给你一个整数数组prices,其中prices[i]表示某支股票第i天的价格。在每一天,你可以决定是否购买和/或出售股票。你在任何时候最多只能持有一股股票。你也可以先购买,然后在同一天出售。返回你能获得的最大利润。解题:思路:最终利润是可......