codevs 1082 线段树练习3

本文介绍了一种基于线段树的数据结构实现方法,用于高效处理区间加法和区间求和操作。通过递归构建、更新及查询线段树节点,能够快速响应大规模数据集上的区间操作请求。
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int n,q;
long long sum,a[200001];
struct tr
{
	int l,r;
	long long v,ad;
}s[2000001];
void build(int i,int l,int r)
{
	s[i].l=l;s[i].r=r;
	if(l==r)
	{
		s[i].v=a[l];return;
	}
	build(i*2,l,(l+r)/2);
	build(i*2+1,(l+r)/2+1,r);
	s[i].v=s[i*2].v+s[i*2+1].v;
}
void ask(int i,int ll,int rr)
{
	if(s[i].ad!=0)
	{
		s[i].v+=s[i].ad*(s[i].r-s[i].l+1);
		s[2*i].ad+=s[i].ad;
		s[2*i+1].ad+=s[i].ad;
		s[i].ad=0;
	}
	if(s[i].l>=ll&&s[i].r<=rr)
	{
		sum+=s[i].v;
		return;
	}
	int kk=i*2;
	if(s[kk].r>=ll)ask(kk,ll,rr);
	if(s[kk+1].l<=rr)ask(kk+1,ll,rr);
}
void add(int i,int ll,int rr,int x)
{
	if(s[i].l>=ll&&s[i].r<=rr)
	{
		s[i].ad+=x;
		return;
	}
	if(ll>=s[i].l&&rr<=s[i].r)s[i].v+=x*(rr-ll+1);
	else s[i].v+=x*(min(abs(s[i].r-ll+1),abs(rr-s[i].l+1)));
	if(s[i].ad!=0)
	{
		s[i].v+=(s[i].r-s[i].l+1)*s[i].ad;
		s[2*i].ad+=s[i].ad;
		s[2*i+1].ad+=s[i].ad;
		s[i].ad=0;
	}
	int kk=i*2;
	if(s[kk].r>=ll)add(kk,ll,rr,x);
	if(s[kk+1].l<=rr)add(kk+1,ll,rr,x);
}
int main ()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	cin>>a[i];
	cin>>q;
	build(1,1,n);
	for(int i=1;i<=q;i++)
	{
		int k;cin>>k;
		if(k==1)
		{
			int b,c,d;
			cin>>b>>c>>d;
			add(1,b,c,d);
		}
		if(k==2)
		{
			int b,c;
			cin>>b>>c;
			sum=0;
			ask(1,b,c);
			cout<<sum<<endl;
		}
	}
}
数据集介绍:垃圾分类检测数据集 一、基础信息 数据集名称:垃圾分类检测数据集 图片数量: 训练集:2,817张图片 验证集:621张图片 测试集:317张图片 总计:3,755张图片 分类类别: - 金属:常见的金属垃圾材料。 - 纸板:纸板类垃圾,如包装盒等。 - 塑料:塑料类垃圾,如瓶子、容器等。 标注格式: YOLO格式,包含边界框和类别标签,适用于目标检测任务。 数据格式:图片来源于实际场景,格式为常见图像格式(如JPEG/PNG)。 二、适用场景 智能垃圾回收系统开发: 数据集支持目标检测任务,帮助构建能够自动识别和分类垃圾材料的AI模型,用于自动化废物分类和回收系统。 环境监测与废物管理: 集成至监控系统或机器人中,实时检测垃圾并分类,提升废物处理效率和环保水平。 学术研究与教育: 支持计算机视觉与环保领域的交叉研究,用于教学、实验和论文发表。 三、数据集优势 类别覆盖全面: 包含三种常见垃圾材料类别,覆盖日常生活中主要的可回收物类型,具有实际应用价值。 标注精准可靠: 采用YOLO标注格式,边界框定位精确,类别标签准确,便于模型直接训练和使用。 数据量适中合理: 训练集、验证集和测试集分布均衡,提供足够样本用于模型学习和评估。 任务适配性强: 标注兼容主流深度学习框架(如YOLO等),可直接用于目标检测任务,支持垃圾检测相关应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值