treap模板

测试,自动去重

15
1
2
3
4
5
6
-5
1
15
2
22
2
2
2

#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
using namespace std;
const int MAXN = 80005;
const int INF=0x7fffffff;
int ch[MAXN][2],v[MAXN],s[MAXN],p[MAXN];
int rt=0,sz=0;
inline int cmp(int a,int b){if(a==b)return -1;return a<b?0:1;}
inline void up(int o){s[o]=s[ch[o][0]]+s[ch[o][1]]+1;}
inline void rot(int &o,int d)
{int t=ch[o][d^1];ch[o][d^1]=ch[t][d];ch[t][d]=o;up(o);up(t);o=t;}
void ins(int &o,int val)
{
	if(!o)
	{
		o=++sz;
		v[o]=val;
		p[o]=rand();
		s[o]=1;
		memset(ch[o],0,sizeof(ch[o]));
		return;
	}
	int d=cmp(val,v[o]);
	if(d==-1)return;//if there is a same variable replace it with if(d==-1)d=0;
	ins(ch[o][d],val);
	if(p[ch[o][d]]<p[o])rot(o,d^1);
	up(o);
}
void del(int &o,int val)
{
	if(!o)return;
	int d=cmp(val,v[o]);
	if(d==-1)
	{
		if(!ch[o][0])o=ch[o][1];
		else if(!ch[o][1])o=ch[o][0];
		else
		{
			int d2=p[ch[o][0]]>p[ch[o][1]] ? 1:0;
			rot(o,d2);
			del(ch[o][d2],val);
		}
	}
	else del(ch[o][d],val);
	up(o);
}
int find(int o,int val)
{
	while(o)
	{
		int d=cmp(val,v[o]);
		if(d==-1)return o;
		o=ch[o][d];
	}
	return 0;
}
int kth(int o,int k)
{
	if(!o || k<=0 || s[o]<k)return 0;
	int d;
	if(!ch[o][0])d=0;
	else d=s[ch[o][0]];
	if(k==d+1)return v[o];
	else if(k<=d)return kth(ch[o][0],k);
	else return kth(ch[o][1],k-d-1);//left child has s+1 nodes;
}
int rank(int o,int val)
{
	int ret=0;
	while(o)
	{
		printf("o=%d ret=%d\n",o,ret);
		if(v[o]==val){ret+=s[ch[o][0]];break;}
		else if(val<v[o])o=ch[o][0];
		else{ret+=s[ch[o][0]]+1;o=ch[o][1];}
		
	}
	printf("o=%d ret=%d\n",o,ret);
	return ret+1;
}
int rk(int o,int val)
{
	if(!o)return 1;
	if(val<=v[o])return rk(ch[o][0],val);
	return rk(ch[o][1],val)+s[ch[o][0]]+1;
}
int dfs(int o)
{
	if(ch[o][0])dfs(ch[o][0]);
	printf("node %d val=%d\n",o,v[o]);
	if(ch[o][1])dfs(ch[o][1]);
}
int lev=1;
int q[MAXN];
int head,tail;
int u;
void bfs()
{
	head=tail=0;
	q[tail++]=rt;
	while(head<tail)
	{
		u=q[head++];
		printf("node=%d lch=%d rch=%d val=%d s=%d p=%d\n",u,ch[u][0],ch[u][1],v[u],s[u],p[u]);
		if(ch[u][0])q[tail++]=ch[u][0];
		if(ch[u][1])q[tail++]=ch[u][1];
	}
}

int main()
{
	int n;
	scanf("%d",&n);
	int a;
	while(n--)
	{
		scanf("%d",&a);
		ins(rt,a);	
	}
	bfs();
	printf("\n");
	dfs(rt);
	a=kth(rt,9);
	int b=rk(rt,22);
	int c=rank(rt,22);
	printf("\na=%d b=%d c=%d\n",a,b,c);	
	return 0;
}


【多种改进粒子群算法进行比较】基于启发式算法的深度神经网络卸载策略研究【边缘计算】(Matlab代码实现)内容概要:本文围绕“基于多种改进粒子群算法比较的深度神经网络卸载策略研究”展开,聚焦于边缘计算环境下的计算任务卸载优化问题。通过引入多种改进的粒子群优化(PSO)算法,并与其他启发式算法进行对比,旨在提升深度神经网络模型在资源受限边缘设备上的推理效率与系统性能。文中详细阐述了算法设计、模型构建、优化目标(如延迟、能耗、计算负载均衡)以及在Matlab平台上的代码实现过程,提供了完整的仿真验证与结果分析,展示了不同算法在卸载决策中的表现差异。; 适合人群:具备一定编程基础和优化算法知识,从事边缘计算、人工智能部署、智能优化等相关领域的科研人员及研究生;熟悉Matlab仿真工具的开发者。; 使用场景及目标:①研究边缘计算环境中深度学习模型的任务卸载机制;②对比分析多种改进粒子群算法在复杂优化问题中的性能优劣;③为实际系统中低延迟、高能效的AI推理部署提供算法选型与实现参考; 阅读建议:建议结合提供的Matlab代码进行实践操作,重点关注算法实现细节与参数设置,通过复现仿真结果深入理解不同启发式算法在卸载策略中的适用性与局限性,同时可拓展至其他智能优化算法的对比研究。
本项目深入探讨了人工智能技术在网络结构解析中的实际运用,重点研究了社交网络环境中潜在连接关系的推断问题。作为网络科学的核心研究方向之一,连接关系推断旨在通过分析现有网络构型来预判可能形成或消失的关联纽带。此项研究对于把握网络演化规律、优化推荐机制以及预判社交网络发展轨迹具有重要价值。 网络结构解析旨在探究复杂系统中各实体间相互关联的模式,其研究范畴涵盖网络构建、特征挖掘、群体划分及动态演变等多个维度。在社交网络场景中,实体代表用户个体,而实体间的关联则映射出用户间的交互行为与社会联系。 网络构型特征是解析过程中的关键要素,主要包括:连接度(节点与其他节点的关联数量)、聚集度(相邻节点间形成连接的概率)、路径距离(节点间最短连通路径)以及中介度(节点在最短路径中的出现频次)。这些特征参数能够有效揭示网络内部结构规律,为连接关系推断提供理论支撑。 在连接关系推断环节,研究重点在于如何基于网络构型特征与节点属性来预判新连接产生的可能性。当前普遍采用的智能算法包括逻辑回归、支持向量机、随机森林及神经网络等。各类算法各具特色:逻辑回归具有计算效率高的优势,但在处理复杂非线性关系时存在局限;支持向量机在小样本数据处理方面表现优异,但需要较高的运算资源;随机森林则擅长处理高维数据,并能有效评估特征重要性。 本研究通过系统对比多种智能算法的预测效能,构建了完整的模型训练、交叉验证、参数优化与性能评估流程。采用曲线下面积、精准度、查全率与调和平均数等量化指标进行综合评判,从而筛选出最适合特定社交网络环境的预测模型。 该项目通过实践演示了如何运用智能计算方法解析社交网络构型特征,并对潜在连接关系进行科学预判,同时提供了多算法性能对比的实证研究案例。对于致力于网络解析、社交网络研究及智能算法应用的专业人士而言,这项研究具有重要的参考价值。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值