Treap模板

#include<cstdio>
#include<cstring>
#include<iostream>
#include<cstdlib>
#include<stack>
using namespace std;
struct Node{
	int key,w,cnt;
	Node *l,*r;
	Node(int key,int cnt){
		this->key=key;
		this->cnt=cnt;
		this->w=rand();
	}
};
class Treap{
public:
	Node* root,*null;
	Treap(){
		null=new Node(1<<30,0);
		root=null->l=null->r=null;
	}
	void right_rot(Node *&x){
		Node* y=x->l;
		x->l=y->r;
		y->r=x;
		x=y;
	}
	void left_rot(Node* &x){
		Node* y=x->r;
		x->r=y->l;
		y->l=x;
		x=y;
	}
	void insert(Node* &x,int e){
		if(x==null){
			x = new Node(e,1);
			x->l=x->r=null;
		}else if(e<x->key){
			insert(x->l,e);
			if(x->l->w<x->w)right_rot(x);
		}else if(e>x->key){
			insert(x->r,e);
			if(x->r->w<x->w)left_rot(x);
		}else x->cnt++;
	}
	void remove(Node* &x,int e){
		if(x==null)return;
		if(e<x->key)remove(x->l,e);
		else if(e>x->key)remove(x->r,e);
		else{
			if(x->l==null||x->r==null){
				Node* y= x;
				x=(x->l!=null)?x->l:x->r;
				delete y;
			}else{
				if(x->l->w<x->r->w){
					right_rot(x);
					remove(x->r,e);
				}else{
					left_rot(x);
					remove(x->l,e);
				}
			}
		}
	}
	Node* pre(Node* x,Node* y,int e){
		if(x==null)return y;
		if(e<x->key)return pre(x->l,y,e);
		else return pre(x->r,x,e);
	}
	Node* next(Node* x,Node* y,int e){
		if(x==null)return y;
		if(e<=x->key)return next(x->l,x,e);
		else return next(x->r,y,e);
	}
	int count(int e){
		Node* p = pre(root,null,e);
		Node* q = next(root,null,e);
		return (q->key-p->key-1<0)?0:(q->key-p->key-1);
	}
};
stack<int>q;
int main(){
	Treap *treap = new Treap();
	int n,m;
	while(~scanf("%d%d\n",&n,&m)){
		treap->insert(treap->root,0);
		treap->insert(treap->root,n+1);
		while(m--){
			char c;
			c=getchar();
			if(c=='D'){
				int t;
				scanf("%d",&t);getchar();
				treap->insert(treap->root,t);
				q.push(t);
			}else if(c=='Q'){
				int t;
				scanf("%d",&t);getchar();
				printf("%d\n",treap->count(t));
			}else if(c=='R'){
				//scanf("\n");
				getchar();
				if(!q.empty()){
					int t=q.top();q.pop();
					treap->remove(treap->root,t);
				}
			}
		}
		while(!q.empty()){
			int t=q.top();q.pop();
			treap->remove(treap->root,t);
		}
		treap->remove(treap->root,0);
		treap->remove(treap->root,n+1);
	}
}

内容概要:该论文聚焦于T2WI核磁共振图像超分辨率问题,提出了一种利用T1WI模态作为辅助信息的跨模态解决方案。其主要贡献包括:提出基于高频信息约束的网络框架,通过主干特征提取分支和高频结构先验建模分支结合Transformer模块和注意力机制有效重建高频细节;设计渐进式特征匹配融合框架,采用多阶段相似特征匹配算法提高匹配鲁棒性;引入模型量化技术降低推理资源需求。实验结果表明,该方法不仅提高了超分辨率性能,还保持了图像质量。 适合人群:从事医学图像处理、计算机视觉领域的研究人员和工程师,尤其是对核磁共振图像超分辨率感兴趣的学者和技术开发者。 使用场景及目标:①适用于需要提升T2WI核磁共振图像分辨率的应用场景;②目标是通过跨模态信息融合提高图像质量,解决传统单模态方法难以克服的高频细节丢失问题;③为临床诊断提供更高质量的影像资料,帮助医生更准确地识别病灶。 其他说明:论文不仅提供了详细的网络架构设计与实现代码,还深入探讨了跨模态噪声的本质、高频信息约束的实现方式以及渐进式特征匹配的具体过程。此外,作者还对模型进行了量化处理,使得该方法可以在资源受限环境下高效运行。阅读时应重点关注论文中提到的技术创新点及其背后的原理,理解如何通过跨模态信息融合提升图像重建效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值