【PAT-A】1044. Shopping in Mars 写题记录

本文介绍了一种使用二分查找算法优化求解序列和的方法。通过预先计算累积和数组,然后对累积和数组应用二分查找,可以高效地找到最接近目标值M的序列和,同时记录下界和上界,最终输出满足条件的序列区间。

这题写了好几版,都说超时,看了看书才想到用二分查找。

思路:

1:边输入边累加,得出Sum[i](Sum[0]=0不能忘记),这样Sum[i]-Sum[j]即为i-j数列之和。

2:得出Sum[i]的连续递增的数列之后,遍历Sum[i],对每个Sum[i],用二分法找到>=M的Sum[r],两者相减得i-r数列,用min记录最小值,以及ans记录i,r,最后遍历完以后ans就行

二分法模板:

        int l=i+1,r=n;
        while (l<r){
            int mid = (l+r)/2;
            vsum = sum[mid] - sum[i];
            if (vsum<x){     //注意这里有没有等号,要看如果sum[mid]刚好是要找的值,比如这里如果写了等号,l和r就比mid大1
                l = mid+1;
            } else {
                r = mid;
            }
        }

#include <cstdio>
#include <algorithm>
using namespace std;
const int maxn = 100010,INF = 1000000;
int a[maxn],sum[maxn];
int n;
struct Ans{
	int a,b;
}ans[maxn];

int search(int x){
	int vsum,round,min=INF,t=0;  //t为答案的个数 
	for (int i=0;i<n;i++){  //对每个sum 
		int l=i+1,r=n;
		while (l<r){  //二分 
			int mid = (l+r)/2;
			vsum = sum[mid] - sum[i];
			if (vsum<x){
				l = mid+1;
			} else {
				r = mid;
			}
		}
		vsum = sum[r] - sum[i];  //找到sum[r],就得出数列和 
		round = vsum-x;  //得出与M的差值 
		if (round>=0 && round < min ) {  //如果数列和比M大,并且最小,就更新 
			min = round;
			t=0;
			ans[t].a = i+1;
			ans[t++].b = r;
		} else if (round>=0 && round == min){ //相等就增加答案 
			ans[t].a = i+1;
			ans[t++].b = r;				
		}				
	}	
	
	return t;
}
int main(){
	long long m;
	scanf("%d%lldd",&n,&m);
	sum[0]=0;
	for (int i=1;i<=n;i++){
		scanf("%d",&a[i]);
		sum[i] = sum[i-1] + a[i];
	}
	int p = search(m);
	for (int i=0;i<p;i++){
		printf("%d-%d\n",ans[i].a,ans[i].b);
	}	
	return 0;
}

 

房屋与网球场目标检测数据集 一、基础信息 • 数据集名称:房屋与网球场目标检测数据集 • 图片数量: 训练集:273张图片 验证集:75张图片 测试集:92张图片 总计:440张图片 • 训练集:273张图片 • 验证集:75张图片 • 测试集:92张图片 • 总计:440张图片 • 分类类别: House(房屋):常见的住宅建筑类型。 TennisCourt(网球场):用于网球运动的专用场地。 • House(房屋):常见的住宅建筑类型。 • TennisCourt(网球场):用于网球运动的专用场地。 • 标注格式:YOLO格式,包含边界框和类别标签,适用于目标检测任务。 • 数据来源:来源于航拍或相关图像数据集。 二、适用场景 • 城市规划与土地管理:自动检测房屋和网球场,辅助城市发展分析和土地利用规划。 • 房地产评估与开发:用于识别住宅建筑和体育设施,支持房产估值和项目规划。 • 体育设施监控:监控网球场的分布和状态,优化体育资源管理和维护。 • 航拍图像分析:适用于无人机或卫星图像中的目标检测,提升地理信息系统(GIS)和遥感应用效率。 三、数据集优势 • 标注精准可靠:采用YOLO格式标注,边界框定位准确,确保模型训练的有效性。 • 类别聚焦实用:专注于房屋和网球场两个常见类别,覆盖住宅和娱乐设施,具有实际应用价值。 • 数据划分合理:提供训练集、验证集和测试集,数据量分配科学,支持模型开发与评估。 • 兼容性强:标注格式兼容主流深度学习框架,如YOLO、PyTorch等,便于直接使用和集成。 • 任务适配性高:专为目标检测任务设计,帮助构建高效、准确的AI模型,适用于多种现实场景。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值