ZJNU - 1407 三级排序 && ZJNU - 1399 快速排序-中级

本文介绍了两种排序算法:归并排序及其变种,并提供了一个计算逆序数的版本。此外,展示了算法的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.题面

acm.zjnu.edu.cn/CLanguage/showproblem?problem_id=1407

http://acm.zjnu.edu.cn/CLanguage/showproblem?problem_id=1399

2.题意

题意应该不用讲了,就是排序,一个是整数排序,另一个是将三个坐标按照一定规则排序。

3.解题思路

只是为了测试一下我新写的归并排序,先挂上来

template<typename T>
inline void merge(T *host,T *guest,int len,int wide){
	int l_p,r_p,gst_p;
	int start,mid,end;
	for (start=0;start<len;start=end){
		l_p = gst_p = start;
		r_p = mid = start + (wide>>1) < len? start + (wide>>1): len;
		end = start + wide < len? start + wide: len;
		while (l_p<mid&&r_p<end){
			if (host[l_p]<host[r_p])
				guest[gst_p++] = host[l_p++];
			else 
				guest[gst_p++] = host[r_p++];
		}
		while (l_p<mid)	guest[gst_p++] = host[l_p++];
		while (r_p<end)	guest[gst_p++] = host[r_p++];
	}
}

template<typename T>
void mergesort(T *host,int len){
	T *guest = new T[len];
	for (int wide=1;wide<len;){
		merge(host,guest,len,wide<<=1);
		merge(guest,host,len,wide<<=1);
	}
	delete guest;
}

附加一个带比较器的版本

template<typename T, typename _Compare>
inline void merge(T *host, T *guest, int len, int wide, _Compare comp){
	int l_p,r_p,gst_p;
	int start,mid,end;
	for (start=0;start<len;start=end){
		l_p = gst_p = start;
		r_p = mid = start + (wide>>1) < len? start + (wide>>1): len;
		end = start + wide < len? start + wide: len;
		while (l_p<mid&&r_p<end){
			if (comp(host[l_p],host[r_p]))	guest[gst_p++] = host[l_p++];
			else 	
				guest[gst_p++] = host[r_p++];
		}
		while (l_p<mid)	guest[gst_p++] = host[l_p++];
		while (r_p<end)	guest[gst_p++] = host[r_p++];
	}
}

template<typename T, typename _Compare>
void mergesort(T *host,int len,_Compare comp){
	T *guest = new T[len];
	for (int wide=1;wide<len;){
		merge(host,guest,len,wide<<=1,comp);
		merge(guest,host,len,wide<<=1,comp);
	}
	delete guest;
}


附加一个计算逆序数的版本


/*
 * 计算出 数组中满足 i<j 且 a[i] > a[j] 的数字的个数
 * 注意cmp函数必须这样写
 */

bool cmp(int a,int b){
    return a <= b;
}

template<typename T, typename _Compare>  
inline ll  merge(T *host, T *guest, int len, int wide, _Compare comp){  
    int l_p,r_p,gst_p;  
    int start,mid,end;  
    ll ret = 0;  
    for (start=0;start<len;start=end){  
        l_p = gst_p = start;  
        r_p = mid = start + (wide>>1) < len? start + (wide>>1): len;  
        end = start + wide < len? start + wide: len;  
        while (l_p<mid&&r_p<end){  
            if (comp(host[l_p],host[r_p])){  
                guest[gst_p++] = host[l_p++];  
                ret += r_p - mid;  
            }else {  
                guest[gst_p++] = host[r_p++];  
            }  
        }  
        while (l_p<mid)  {
            guest[gst_p++] = host[l_p++];  
            ret += r_p - mid;
        }
        while (r_p<end){  
            guest[gst_p++] = host[r_p++];  
        }  
    }  
    return ret;  
}  

template<typename T, typename _Compare>  
ll mergesort(T *host,int len,_Compare comp){  
    T *guest = new T[len];  
    ll ret = 0;  
    for (int wide=1;wide<len;){  
        ret += merge(host,guest,len,wide<<=1,comp);  
        ret += merge(guest,host,len,wide<<=1,comp);  
    }  
    delete guest;  
    return ret;  
}  




4.解题代码

暂缺

### Mamba-YOLO 介绍 Mamba-YOLO 是一种基于自监督模块(SSMs)的目标检测框架,旨在提升模型在复杂环境下的表现。该架构仅继承了YOLO系列快速推理的优点,还通过引入创新性的组件解决了传统YOLO模型存在的局限性。 #### 模型特点 1. **有效捕捉远距离依赖** Mamba架构展示了其在捕获远程地面依赖方面的有效性[^1]。这使得模型能够在更广泛的场景下保持较高的准确性。 2. **增强局部特征提取能力** 针对复杂尺度变化任务中的挑战,Mamba YOLO引入了Local Spatial Block (LSBlock),用于强化局部特征的获取。LSBlock利用深度可分离卷积(DWConv)和多层感知器(MLP)相结合的方式,高效地表示输入特征图的空间信息,并通过残差连接机制将这些信息融入到原有特征中,从而增强了整体特征表达力[^2]。 3. **优秀的跨领域适性** 实验表明,当用于实例分割任务时,即使是在同大小的对象上,Mamba YOLO也展现出了超越其他同类算法的表现。特别是在COCOSeg数据集上的测试结果显示,无论是边界框平均精度(Bbox AP)还是掩码平均精度(Mask AP),Mamba YOLO均取得了优异的成绩[^3]。 #### 使用方法 要使用Mamba-YOLO进行目标检测或实例分割: - 安装必要的库文件以及下载预训练权重。 ```bash pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117/ git clone https://github.com/HZAI-ZJNU/Mamba-YOLO.git cd Mamba-YOLO wget http://weights_url/pretrained_weights.pth ``` - 准备好自己的数据集并按照官方文档说明调整配置参数。 - 运行训练脚本 ```python from mambayolo import train_model, evaluate_model train_config = { &#39;data_path&#39;: &#39;./your_dataset&#39;, &#39;batch_size&#39;: 16, &#39;epochs&#39;: 50, } model = train_model(train_config) eval_results = evaluate_model(model, test_data_loader) print(f"Evaluation Results: {eval_results}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值