当前位置: 首页 > news >正文

算法竞赛C++基础

C++基础

by 幻夜的梦

C++是很复杂的语言,但打算法竞赛只需要一点点知识即可,与其说是C++,不如说是C语言+STL

万能头文件与命名空间

请背下来这两句代码,C++是兼容C语言的,洛谷刷题选C++

#include <bits/stdc++.h>
using namespace std;

#define int long long

把全部的int 改成long long类型,很多算法题都会经常爆int,所以我们直接加上这句话,这是良好的算竟习惯。

但是,加上这句话后,主函数不能使用int main()了,会报错,当然有很多题目不卡long long,这个时候你就可以用int main()。那么加上后有两种修改方式:signed main() 或者直接 main()

signed main(){ }
main(){ }

那么以后写算法题,就可以先敲出来标准的一个框架:

#include <bits/stdc++.h>
using namespace std;
#define int long long
signed main(){//具体内容return 0;
}

C++输入输出

这里主要介绍C++的输入输出cin与cout,cin>> 与cout<<的好处是可以连续输入输出,比较方便:

比如:cin>>a>>b>>c>>d; cout<<a<<“ ”<<b<<endl;

在万能头文件下cin、cout 可以与scanf、printf结合使用。

//输入a b,输出a+b,最后换行
//C语言风格:
int a,b;
scanf("%d %d",&a,&b);
printf("%d\n",a+b);//C++风格:
int a,b;
cin>>a>>b;
cout<<a+b<<endl; //endl是换行的意思,你也可以cout<<'\n';//保留小数问题用printf方便,比如保留3位小数:
double x;cin>>x;
printf("%.3lf",x);

数组大小定义

要看题目的范围,比如n最多到10^5,则定义数组一般要比这个大一点点,一般+5,防止运行错误。

const int N=1e5+5;
int a[N];//定义在main函数之前的全局变量数组全部默认赋值为0//如果学了STL的动态数组vector,可以这样定义:
int n;cin>>n;
vector<int> v(n+5,0)//比输入的n大5,前面长度,后面赋值。

结合for循环输入输出

很多时候结合for循环输入输出很方便。

比如一道题:输入n,第二行输入n个数,输出这n个数的总和。1<=n<=200000。完整代码:

#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N=2e5+5;
int a[N];
signed main(){int n;cin>>n;for(int i=1;i<=n;i++){cin>>a[i];}int sum=0;for(int i=1;i<=n;i++){sum+=a[i];}cout<<sum;return 0;
}

http://www.mrgr.cn/news/39814.html

相关文章:

  • 关于国内节点和海外节点的区别,这些要了解
  • 【对于Python爬虫的理解】数据挖掘、信息聚合、价格监控、新闻爬取等,附代码。
  • Redis接口访问优化
  • 前端DOM常用操作
  • 【STM32】 TCP/IP通信协议(1)--LwIP介绍
  • 全新升级的GUI: Depthai Viewer 使用指南发布
  • 求解线性方程的方法步骤(含例题),附解线性方程计算器
  • 如何使用 Python 读取数据量庞大的 excel 文件
  • 体育课评分系统小程序的设计
  • 【源码+文档+调试讲解】基于servlet.jsp的潮服购物商城系统的设计与实现
  • linux下sudo执行的程序会有一个额外的进程的问题
  • 全面指南:探索并实施解决Windows系统中“mfc140u.dll丢失”的解决方法
  • 鸿蒙开发(NEXT/API 12)【已连接穿戴设备查询】手机侧应用开发
  • 第168天:应急响应-ELK 日志分析系统Yara规则样本识别特征提取规则编写
  • 管理层“建行化”弊端显现?增收不增利,海外业务亦“不争气”
  • 记录一次gRpc流式操作(jedis版)
  • 课程记录,实验4,
  • HashMap底层原理是什么?从源码入手,沉浸式解读HashMap序列化、存储、扩容、获取等方法具体实现
  • 在外打工,我看谁还分不清定金和订金!
  • java如何查看线程死锁?