POJ 3468 A Simple Problem with Integers 详解(线段树)

MoveIt2 Servo实战:解锁UR机械臂在ROS2中的实时遥操作与动态响应 本文深入探讨了MoveIt2 Servo在UR机械臂实时遥操作中的应用,展示了如何通过ROS2实现毫秒级动态响应。文章详细解析了Servo的核心价值、环境配置、控制器适配及高级调优技巧,特别适用于需要高精度控制的工业场景,如VR手术训练和汽车装配线。 阅读详情

第一次写线段树,感觉还是可以理解的微笑(借鉴了coder_hsc的写法)

原文地址:http://blog.youkuaiyun.com/w00w12l/article/details/7920846

题目链接:http://poj.org/problem?id=3468

线段树为什么要开4倍空间:http://scinart.github.io/acm/2014/03/19/acm-segment-tree-space-analysis/

                                                  http://bbs.youkuaiyun.com/topics/380264561

题目大意:两种操作1.更新一段区间的值,即将一段区间上每个点都加上一个值。2.查询一段区间的和。

因操作数过大,故直接暴力是不行的。

建树操作:

    lef,rig左右边界,sum和mark乘以区间长度,是lef到rig区间上的和,初始mark为0,递归建树,到叶子节点停止递归。

更新操作:

    如果更新区间恰好相同,直接将更新值加到懒标记上,若不完全相同(因为查询至上而下,故区间必定包含更新区间),直接在该节点sum值上加上更新区间长度乘以更新的值。并根据更新区间与该区间的位置,递归继续更新,直至完全相符。

查询操作:

    如果区间完全相符,返回sum和mark乘以区间长度之和 。若不完全相符,将懒标记下放,并在该区间sum值上加上懒标记乘以区间长度,并将mark值置0。并继续根据位置递归查询。

实现代码如下:

#include <iostream>
#include <stdio.h>
#define maxn 100010
using namespace std;
struct node
{
 	int lef,rig,mid;   //该节点的左右边界,中值 
 	long long int sum,mark;//sum,mark乘区间之和为该区间总值,但sum不一定就是原值,会被更新 
}Tree[maxn<<2];//一定要移两位,是有理论依据的,见上面链接,开3倍可能只是测试数据不够大,所以一直没事
int store[maxn];//存原序列 ,下标从1开始 
void build_tree(int id,int lef,int rig)
{
	int mid=(lef+rig)>>1;
	//初始化 
	Tree[id].lef=lef;
    Tree[id].rig=rig;
    Tree[id].mid=mid;
    Tree[id].mark=0;
   //到了叶子 
	if(lef==rig)
	{
 	   Tree[id].sum=store[lef];//lef刚好和原序列下标对应 
 	   return;
    }
      build_tree(id<<1,lef,mid);
      build_tree((id<<1)|1,mid+1,rig);
   //该节点左右树已建成 
   Tree[id].sum=(Tree[id<<1].sum+Tree[(id<<1)|1].sum);
}
void update(int id,int lef,int rig,int val)
{
	//如果区间完全相符,直接更新mark
	if(Tree[id].lef==lef&&Tree[id].rig==rig)
	{
      Tree[id].mark+=val;
      return; 	
     } 
   //若不完全相符,查询区间必定包含在该区间内,故直接更新该点sum
   //因为更新的区间在该区间内,所以sum值可以直接更新 
    Tree[id].sum+=(long long)val*(rig-lef+1); 
   //完全落在mid左侧
    if(Tree[id].mid>=rig)
    update(id<<1,lef,rig,val);
   //完全落在mid右侧 
    else if(Tree[id].mid<lef)
     update((id<<1)|1,lef,rig,val);
   //落在两侧 ,两侧都更新 
    else
   {
      update(id<<1,lef,Tree[id].mid,val); 
      update((id<<1)|1,Tree[id].mid+1,rig,val);
   }
}
long long int query(int id,int lef,int rig)
{
	//如果区间完全相符,返回sum和mark之和 
   if(Tree[id].lef==lef&&Tree[id].rig==rig)  
    return Tree[id].sum+Tree[id].mark*(long long)(rig-lef+1);
   //区间不完全相符,但查询区间一定是从大到小,故需下放懒标记 
    if(Tree[id].mark!=0)
    {
    	//将mark值放入sum中,mark清空,避免二次赋值mark给子树
    	//该节点区间大小大于查询区间大小 
		
		Tree[id<<1].mark+=Tree[id].mark;
        Tree[(id<<1)|1].mark+=Tree[id].mark;
		Tree[id].sum+=(long long)(Tree[id].rig-Tree[id].lef+1)*Tree[id].mark;
        Tree[id].mark=0;
    }
    //完全在左侧 
    if(Tree[id].mid>=rig)
          return query(id<<1,lef,rig);
    //在右侧 
    else if(Tree[id].mid<lef)
          return query((id<<1)|1,lef,rig);
    //返回两边之和 
    else
          return query(id<<1,lef,Tree[id].mid)+query((id<<1)|1,Tree[id].mid+1,rig);
}
int main()
{
	int n,m,l,r,v;
	char c;
	while(scanf("%d%d",&n,&m)!=EOF)
	{
		for(int i=1;i<=n;i++)
		{
			scanf("%d",&store[i]);
		}
		build_tree(1,1,n);
		for(int i=0;i<m;i++)
		{
			getchar();
			scanf("%c",&c);
		    if(c=='Q')
			{  
                 scanf("%d%d",&l,&r);  
                 printf("%lld\n",query(1,l,r));  
            }  
            else
			{  
                  scanf("%d%d%d",&l,&r,&v);  
                  update(1,l,r,v);  
			}
		}
	}
}
 





AI Agent ReAct架构设计模型剖析 ReAct通过"思考-行动-观察"循环运作:智能体先进行自然语言推理,再调用外部工具执行行动,观察结果后继续推理直至解决问题。这种架构提高了透明度和准确性,减少幻觉风险,使LLM能主动分解任务并利用外部数据源。实现关键在于精心设计的提示模板,引导LLM按结构化格式响应,而非依赖模型固有能力。 阅读详情

相关推荐

告别枯燥的Unity编辑器脚本:Odin插件如何让游戏数据配置变得像搭积木一样简单?

本文详细介绍了Odin插件如何简化Unity编辑器脚本开发,使游戏数据配置变得直观高效。通过声明式特性和丰富的可视化工具,Odin让开发者告别繁琐的OnGUI代码,实现所见即所得的开发体验。文章重点展示了Odin的核心优势、魔法特性及实战案例,帮助Unity开发者提升工作效率。

weixin_28717411的博客 346

【线段树】POJ 3468 A Simple Problem with Integers

POJ 3468 A Simple Problem with Integers 题意:区间修改,区间查询 思路:模板题 #include <iostream> #include <cstdio> #include <algorithm> #include <queue> #include <cmath> #include <cs...

L_X_ 173

opencode 完全指南:终端AI编程助手的安装、模型配置与实战

在AI编程助手快速迭代的当下,开发者对终端环境下的自动化编码需求愈发强烈。以自然语言驱动代码修改、命令执行与测试验证,已成为提升工程效率的重要方向。这类工具普遍遵循模型无关的设计原则,通过兼容OpenAI格式的接口接入多种大模型,并借助多会话管理、Skills、Memory等机制实现可审查、可干预的闭环流程。从安装配置到日常使用,再到apihub网关与免费模型的接入,终端AI助手在代码审查、跨文件重构、浏览器自动化验证等场景中展现出独特价值。本文聚焦opencode这一开源CLI工具,详细拆解其核心定位、模

weixin_33868027的博客 418

POJ3468,A Simple Problem with Integers,线段树

题目链接: POJ3468 A Simple Problem with Integers Time Limit: 5000MS   Memory Limit: 131072K Total Submissions: 77541   Accepted: 23874 Case Time Limit: 2000MS Descrip

北 496

Python爬虫教程:微博热点话题抓取与社交媒体分析

微博是中国最大的社交媒体平台之一,拥有海量的用户和丰富的讨论话题。通过爬取微博的热门话题和讨论内容,我们可以深入分析用户的兴趣、舆论走势、社会情绪等。通过爬取微博的热点话题和讨论内容,我们可以获得关于当前热门话题的宝贵数据,并基于这些数据进行多种社交媒体分析。本文将通过Python爬虫技术,详细介绍如何抓取微博上的热门话题、话题讨论内容,并进行社交媒体分析。希望本文为你提供了一个全面的微博数据抓取与分析的指南,帮助你在社交媒体数据分析的道路上迈出坚实的第一步。微博上的一些页面内容是静态的,可以直接通过。

2201_76125261的博客 590

2026数学建模国赛D题:时频冲突检测与消解 论文解析

最终无需撤销任何计划,共调整110个计划,其中频移43个、时移48个、间隔调整19个,总调整幅度528。附件模板只要求填写新增计划的频段区间和首次时间区间,没有要求填写宽度、间隔和次数,因此本文按附件中C类装备的统一需求特征处理:每个新增计划占用3个连续频段,持续2个时间单位,间隔8,使用12次。本文针对有限频带内大量周期性用频计划的时频冲突检测、单参数消解、无冲突条件下新增C类计划装载,以及允许调整间隔时长后的再次消解问题,建立了由占用展开、冲突图、组合动作集、精确约束满足和二维资源装箱组成的统一模型。

YOLO 190

POJ 3468 A Simple Problem with Integers 线段树

题目链接:http://poj.org/problem?id=3468 题型:线段树 以下是参考大神的代码写的!! #include #include #include #include #include #include #include #include #define Lson left ,mid, rt<<1 #define Rson mid+1,right,rt<<1|1 #

PWZER 537

【同等学力】2004-数学⭐✨

1.有些人勤奋,但并非所有人都勤奋。2.不管白猫黑猫,抓住老鼠就是好猫

super_mochi1 512

POJ 3468 A Simple Problem with Integers 线段树

线段树模版题。 贴个代码。 #include #include #include #include #include #include #include #include #include #include #include #include #define PI acos(-1.0) #define Max 100005 #define inf 1<<28 using

just_water 1328

YOLO26 改进 | (教师:YOLOv8L,学生:YOLO26) | 知识蒸馏 (Knowledge Distillation)

本文介绍了基于YOLO26框架的知识蒸馏实战方法,通过教师模型指导学生模型训练,在不增加推理成本的情况下提升模型精度。文章详细阐述了基于响应的知识蒸馏实现方案,通过最小化教师与学生模型预测Logits间的KL散度实现知识迁移。核心实现包括:1) 创建DistillationModel包装器类,同时运行师生模型;2) 自定义DistillationLoss,在原检测损失基础上增加KL散度损失。该方法适用于希望保持YOLO26轻量级特性同时获得接近大模型精度的场景,文中提供了完整的代码实现方案。

weixin_51988935的博客 510

Explorer.exe系统错误,电脑重启后刚开始一段时间正常,过一会桌面任务栏就卡死,可以打开任务管理器

联想E14Win10专业版。

本博客,博文仅代表个人操作经验,不能完全解决你的问题,仅供参考,佛系回复。 8053

线段树 POJ 3468 A Simple Problem with Integers

Description You have N integers, A1, A2, ... , AN. You need to deal with two kinds of operations. One type of operation is to add some given number to each number in a given interval. The other i

Advanced_hwr的博客 683

【华为OD技术面】 - 考到的Lettcode手撕算法代码真题目录

【华为OD技术面 - 考到的Lettcode手撕算法代码真题目录

算法大师! 7821

【线段树】A Simple Problem with Integers poj ——3468

A Simple Problem with Integers You have NNN integers, A1,A2,...,ANA1, A2, ... , ANA1,A2,...,AN. You need to deal with two kinds of operations. One type of operation is to add some given number to each...

我の名字 224

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

POJ3468 A Simple Problem with Integers 线段树

A Simple Problem with Integers Time Limit: 5000MS Memory Limit: 131072K Total Submissions: 152613 Accepted: 47315 Case Time Limit: 2000MS Description You have N integers, A1, A2, … , AN. You need to...

DouglasConnor的博客 218

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

POJ3468 A Simple Problem with Integers 线段树成段更新

传送门:POJ3468 题意:给定n个数和两种操作,Q  i   j    代表求Σnum[t](i 思路:线段树基本操作,成段更新,区间询问。也可以用树状数组做,详见挑战程序设计第二版P179. 代码: #include #include #include #include #include #include #include #include #include #include #de

WA是一笔财富 364

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

POJ - 3468 A Simple Problem with Integers 经典线段树问题

POJ - 3468  A Simple Problem with Integers You have N integers, A1, A2, ... , AN. You need to deal with two kinds of operations. One type of operation is to add some given number to each number in a g...

GYH0730的博客 310

POJ 3468 A Simple Problem with Integers 【线段树】

题目链接 http://poj.org/problem?id=3468 思路 线段树 区间更新 模板题 在赋初始值的时候,按点更新区间就可以 AC代码 #include <cstdio> #include <cstring> #include <ctype.h> #include <cstdlib&g...

dianxi0949的博客 65

POJ 3468 A Simple Problem with Integers(线段树)

题目地址:http://poj.org/problem?id=3468 思路:updata()区间增减,query()区间求和,会超int用long long AC代码: #include #include #include #include #include #include #include #include #include #include #include

Java识堂,一个有干货的微信公众号 375

poj3468A Simple Problem with Integers 线段树

//两个操作,第一个区间[a , b]内的所有数加c //第二个询问区间[a , b]的值 //很标准的线段数 #include #include #include using namespace std ; const int maxn = 1e5+10 ; #define left v #define right v typedef __int64 ll ; ll h[m

ijbuhv的专栏 798

POJ 3468 A Simple Problem with Integers(线段树 ,延迟标记)

题目链接:http://poj.org/problem?id=3468    今天终于把电脑的输入法修好了!!终于可以多写一点了~具体解释在代码中,本题代码也可以作为线段树区间更新的模板O(∩_∩)O~ #include #include using namespace std; #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1 #define

614

【POJ3468】【zkw线段树】A Simple Problem with Integers

Description You have N integers, A1, A2, ... , AN. You need to deal with two kinds of operations. One type of operation is to add some given number to each number in a given interval. The othe...

Gregory99174的博客 275

[线段树] POJ 3468 A Simple Problem with Integers

题目 Description You have N integers, A1, A2, … , AN. You need to deal with two kinds of operations. One type of operation is to add some given number to each number in a given interval. The other is to...

weixin_44197056的博客 112

POJ3468 线段树A Simple Problem with Integers

我还是第一次见一会对 一会不对的评测系统。。。一样的代码 一次对一次不对?? #include<iostream> #include<algorithm> #include<cstring> #define lc rt<<1 #define rc rt<<1|1 using namespace std; const int maxn ...

lizhenhao 153

[POJ 3468] A Simple Problem with Integers 线段树解题报告

[POJ 3468] A Simple Problem with Integers 线段树题目描述输入输出题目大意解题思路源代码如下心得总结功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图...

谁取了我的ID:gz007的博客 321

【poj 3468】 A Simple Problem with Integers 线段树

A Simple Problem with Integers Time Limit: 5000MS Memory Limit: 131072K Total Submissions: 86938 Accepted: 26990 Case Time Limit: 2000MSDescriptionYou have N integers, A1, A2, … , AN. Yo

ATOD 730
上一篇: 大数除的“伪O(1)”算法(类似小学算术)
下一篇: 最大流详细介绍
David_Jett
博客等级 码龄12年 125粉丝 358原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值