首页 > 其他分享 >竞赛常用基础

竞赛常用基础

时间:2024-02-24 14:00:32浏览次数:19  
标签:std 常用 竞赛 cout int namespace 基础 using main

语法基础

万能头文件

#include<bits/stdc++.h>
//这行代码包含整个标准库 (bits/stdc++.h)。它是一个方便的头文件,在竞技编程环境中经常使用,它包含了大多数标准头文件。

取消同步流

#include<bits/stdc++.h>
using namespace std;
int main(){
	ios::sync_with_stdio(0);//关闭c++和c的输入输出流同步 
	//解除cin 和 cout的绑定 
	cin.tie(0);
	cout.tie(0);
} 

替换ENDL

	cout << a << '\n'; //比endl 处理快

控制格式化

#include<bits/stdc++.h>
using namespace std; 
int main(){
	double a, b;
	a = 5;
	b = 6;
	cout << fixed << setprecision(3) << a << b << '\n'; //控制三位小数点 若需要填充需配合fixed
}

全局数组的使用

#include<bits/stdc++.h>
using namespace std; 
const int N = 1000; //编译器常量 
int a[N]; //全局数据默认为0 不必初始化 存储在全局静态存储区 

int main(){
	for(int i=0;i<N;i++){
		cout << a[i] << endl;
	}
}

常用库函数

排序

sort(a,a+n+1); // 数组名
sort(v.begin(),v.end()) //vector数组
    
//自定义比较函数形式
 #include<bits/stdc++.h>
using namespace std; 

//二元谓词
bool cmp(const int& i,const int& j){
	return i > j; //排序方式 默认 i < j 
}
int main(){
	vector<int> v = {1,3,7,11};
	sort(v.begin(),v.end(),cmp);
	for(auto c : v)
		cout << c << " "; 
 /*11 7 3 1
--------------------------------
Process exited after 0.01275 seconds with return value 0
请按任意键继续. . .*/

    
//自定义比较lambda
#include<bits/stdc++.h>
using namespace std; 

int main(){
	vector<int> v = {1,3,7,11};
	sort(v.begin(),v.end(),[](int i,int j){return i > j;});
	for(auto c : v) //c++ 11
		cout << c << " "; 
}
}

最值查找

#include <bits/stdc++.h>
using namespace std;
int main()
{
  	int a = 5, b = 6;
  	//要么参数 要么列表 
  	int Maxelem = max(a,b);
  	int Minelem = min(a,b);
  	int Big = max({1,3,4,6});
  	
  	cout << Maxelem << endl;
  	cout << Minelem << endl;
  	cout << Big << endl;
  	
  	vector<int> v = {1,8,22,3,9,11};
  	//返回地址 
  	Maxelem = *max_element(v.begin(),v.end());
  	cout << Maxelem << endl;
  	Minelem = *min_element(v.begin(),v.end());
	cout << Minelem << endl;
	// 对指定位置进行排序好 左右只是比其小 
	nth_element(v.begin(),v.begin()+2,v.end());
	for (auto c : v ){
		cout << c << " ";
	} 	
}

二分查找

#include <bits/stdc++.h>
using namespace std;
int main()
{
  int n;
  vector<int> v(n);
  for (int i = 0; i < n ; ++i)   cin >> v[i];
  int target;
  cin >> target;
  bool found = binary_search(v.begin(),v.end(),target);
  
  cout << found << endl;
  lower_bound(v.begin(),v.end(),target);//找到第一个大于或者等于 地址 -begin 
  upper_bound(v.begin(),v.end(),target); //找到第一个大于	地址 -begin 
}

大小写转换

#include <bits/stdc++.h>
using namespace std;
int main()
{
	char c1 = 'A';
	char c2 = 'a';
	
	bool a = islower(c1);
	bool b = isupper(c2);
    char c = tolower(c1) ; //需要定义 不然返回的ASCII
	cout << c;
}

全排列

#include <bits/stdc++.h>
using namespace std;
int main()
 //会变成原样
{
    //返回bool
	vector<int> v = {1,2,3};
	while(next_permutation(v.begin(),v.end())){
		for (auto c : v) cout << c << " ";
		cout << endl;
	}
	
}

#include <bits/stdc++.h>
using namespace std;
int main()
{
	//上一个全排列 
	vector<int> v = {3,2,1};
	while(prev_permutation(v.begin(),v.end())){
			for (auto c : v) cout << c << " ";
			cout << endl;
		}
	
}

mernset

//void *memset(void *ptr, int value, size_t num);
#include <bits/stdc++.h>
using namespace std;
int main()
{
	//按1B设置第二个参数
	//常用两种 
	int a[6];
	memset(a,0,sizeof(a));// point 设置的num 对多大的大小 
	for( auto c:a) cout << c << " ";
	int b[4];
	memset(b,-1,sizeof(b));
	for( auto c:b) cout << c << " "; 
}

SWAP

//对象交换this指针
#include <bits/stdc++.h>
using namespace std;
int main()
{
	int a = 5, b = 6;
	swap(a,b);
	cout << a << " " << b; 
}

reverse

#include <bits/stdc++.h>
using namespace std;
int main()
{
	vector<int> v = {1,3,2,2346};
	reverse(v.begin(),v.end());
	for (auto c:v) cout << c << " ";
}

unique

#include <bits/stdc++.h>
using namespace std;
int main()
{
	vector<int> v = {1,2,2,2,3,46};
	auto it = unique(v.begin(),v.end());//返回处理后末尾元素的地址 
	
//	for (auto c : v) cout << c << " ";
	// 1 2 3 46 3 46 覆盖去重
	v.erase(it,v.end());
	for (auto c : v) cout << c << " ";
}

标签:std,常用,竞赛,cout,int,namespace,基础,using,main
From: https://www.cnblogs.com/wbcde116/p/18031006

相关文章

  • 机器人基础总结
    刚体在三维空间中有六个自由度的运动——三个是平移(线性运动),三个是旋转(角运动)。尽管刚体有六个运动自由度,我们通常使用三维向量来表达其动力学。\[f=ma_c\]\[\mathbf{n}_C=I\dot{\boldsymbol{\omega}}+\boldsymbol{\omega}\timesI\boldsymbol{\omega}\]达了作用于刚体......
  • NanoFramework操作ESP32(一)_基础元器件篇(四十三)_ KY-010光遮断传感器
    一、元器件介绍1、针脚用途编号名称功能1GND电源地2+5V电源正3S信号脚;倾斜时输出低电平二、示例代码1、代码:元器件的针脚ESP32模块的针脚GND;供电脚-GND+5V;供电脚++5VS;信号脚IO16  #regionKY-010光遮断传感器......
  • ACM基础数学知识
    1、异或相同的数,异或结果为0,不同的数,异或结果为1.异或会用在nim博弈和一些数学中。可以找出n+1个数中,唯一一个与其他的数不同的数异或有个性质:一个数对另一个数异或两次,数值不变。性质应用:交换两个数x=x^y;//x=3^4y=x^y;//y=3^4^4=3x=x^y;//x=......
  • NanoFramework操作ESP32(一)_基础元器件篇(四十二)_ KYY-031敲击传感器
    一、元器件介绍  本开关在静止时为开路(OFF)状态,当受到外力碰触而达到适当震动力时,或移动速度达到适当离(偏)心力时,导电接脚会发生瞬间导通(ON)状态,使电气特性改变,而当外力消失时电气特性恢复开路(0FF)状态。可使用数字信号接收。1、针脚用途编号名称功能1GND电......
  • pytest简易教程(33):pytest常用插件 - 多重校验(pytest-assume)
     pytest简易教程汇总,详见:https://www.cnblogs.com/uncleyong/p/17982846应用场景对同一用例,要执行多个断言,查看断言是否都成功哪怕某个断言失败,后面断言依然能执行(assert实现不了) 插件安装pipinstall pytest-assume 使用方式pytest.assume(表达式)如果使用assert......
  • pytest简易教程(34):pytest常用插件 - 测试报告(pytest-html)
     pytest简易教程汇总,详见:https://www.cnblogs.com/uncleyong/p/17982846关于pytest-html通过命令行方式,生成xml/html格式的测试报告,存储于用户指定路径报告会覆盖上一次的 插件安装pipinstallpytest-html 使用方式命令行格式:pytest--html=./report/report.html......
  • 常用的Shell脚本 - Docker and Docker-compose 安装
    功能说明:在CentOS和Ubuntu系统上安装Docker和DockerCompose的shell脚本,并在安装后显示Docker和DockerCompose版本。Certainly!BelowisashellscriptthatinstallsDockerandDockerComposeonbothCentOSandUbuntusystems.Itfollowsyourrequirem......
  • 数据库基础3 关系数据库与关系模型
    数据库系统的组成1.硬件平台2.软件3.人员(1)数据库管理员(DBA)(2)系统分析员、数据库设计人员(3)应用程序员(4)最终用户1.偶然用户2.简单用户3.复杂用户 关系数据库关系模型是从表(Table)的处理方式中抽象出来的在对传统表的操作上,进行数学化严格定义的基础上,......
  • 数据库基础2 数据模型
    数据模型数据模型是什么数据模型是对现实世界数据特征的抽象数据模型应该满足的要求数据模型分类1.现实→概念→逻辑→物理转换过程2.概念模型信息世界基本概念实体(Entity)属性码(键)实体型实体集 联系 ER图:实体-联系方法(待续)数据模型的组成要素1.数......
  • 数据库基础4 关系代数运算
    基本操作前提条件:并相容性是并、差、交等关系代数操作的前提参与运算的两个关系及其相关属性之间必须又一定的对应性、可比性或关联性两个关系的属性数量必须相同对于任意i,关系R的第i个属性必须与另一个关系的第i个属性的域相同(数据类型、取值范围)一、传统集合运算并......