南阳-116-士兵杀敌(二)

本文介绍了一种使用完全二叉树实现的高效算法,该算法能够快速响应士兵杀敌数的查询与实时更新需求。面对频繁变化的数据集,通过构建并维护一棵完全二叉树,可以实现在对数时间内完成查询与更新操作。

点击打开链接


士兵杀敌(二)

时间限制: 1000 ms  |  内存限制: 65535 KB
难度: 5
描述

南将军手下有N个士兵,分别编号1到N,这些士兵的杀敌数都是已知的。

小工是南将军手下的军师,南将军经常想知道第m号到第n号士兵的总杀敌数,请你帮助小工来回答南将军吧。

南将军的某次询问之后士兵i可能又杀敌q人,之后南将军再询问的时候,需要考虑到新增的杀敌数。

输入
只有一组测试数据
第一行是两个整数N,M,其中N表示士兵的个数(1<N<1000000),M表示指令的条数。(1<M<100000)
随后的一行是N个整数,ai表示第i号士兵杀敌数目。(0<=ai<=100)
随后的M行每行是一条指令,这条指令包含了一个字符串和两个整数,首先是一个字符串,如果是字符串QUERY则表示南将军进行了查询操作,后面的两个整数m,n,表示查询的起始与终止士兵编号;如果是字符串ADD则后面跟的两个整数I,A(1<=I<=N,1<=A<=100),表示第I个士兵新增杀敌数为A.
输出
对于每次查询,输出一个整数R表示第m号士兵到第n号士兵的总杀敌数,每组输出占一行
样例输入
5 6
1 2 3 4 5
QUERY 1 3
ADD 1 2
QUERY 1 3
ADD 2 3
QUERY 1 2
QUERY 1 5
样例输出
6
8
8
20

题解:套模板,完全二叉树的单组数据更新

#include<stdio.h>
#include<algorithm>
#include<string.h>
using namespace std;
struct Node{
	int l,r,sum;
}Tree[1000000<<2];
void PushUp(int o)
{
	Tree[o].sum=Tree[o*2].sum+Tree[o*2+1].sum;
}
void BuidTree(int o,int l,int r)
{
	Tree[o].l=l;
	Tree[o].r=r;
	if(l == r)
	{
		int t;
		scanf("%d",&t);
		Tree[o].sum=t;
		return ;
	}
	int mid=(l+r)>>1;
	BuidTree(o*2,l,mid);
	BuidTree(o*2+1,mid+1,r);
	PushUp(o);
}
int QuerySum(int o,int l,int r,int x,int y)
{
	if(x==l&&y==r)
		return Tree[o].sum;
	int mid=(l+r)>>1;
	if(mid<x)
		return QuerySum(o*2+1,mid+1,r,x,y);
	else if(mid>=y)
		return QuerySum(o*2,l,mid,x,y);
	else
		return QuerySum(o*2,l,mid,x,mid)+QuerySum(o*2+1,mid+1,r,mid+1,y);
}
void UpDate(int o,int l,int r,int x,int y)	//找到要更新的节点,并进行更新
{
	if(l == r)
	{
		Tree[o].sum+=y;
		return ;
	}
	int mid=(l+r)>>1;
	if(mid>=x)
		UpDate(o*2,l,mid,x,y);
	else
		UpDate(o*2+1,mid+1,r,x,y);
	PushUp(o);		//一个节点变动,与之相关的其它节点也要变动
}
int main()
{
	int n,m,a,b;
	char ord[50];
	scanf("%d%d",&n,&m);
	BuidTree(1,1,n);
	for(int i=1;i<=m;i++)
	{
		scanf("%s%d%d",ord,&a,&b);
		if(strcmp(ord,"QUERY")==0)	//注意字符串要用双引号,字符才用单引号
			printf("%d\n",QuerySum(1,1,n,a,b));
		else		//如果不是输出,要更新数据
			UpDate(1,1,n,a,b); 	
	}
	return 0;
}




FaceCat-Kronos是一款由花卷猫量化团队基于清华大学Kronos开源架构开发的金融预测系统。该系统融合了深度学习方法,通过对证券历史行情进行大规模预训练,构建了能够识别市场微观结构的分析模型。该工具的核心功能在于为做市商及短线交易者提供高精度的价格形态规律推演,从而优化其交易策略的制定过程。 从技术架构来看,该系统依托Kronos框架的高性能计算特性,实现了对海量金融时序数据的高效处理。通过引入多层神经网络,模型能够捕捉传统技术分析难以察觉的非线性关联与潜在模式。这种基于人工智能的量化分析方法,不仅提升了市场数据的信息提取效率,也为金融决策过程引入了更为客观的算法依据。 在行业应用层面,此类工具的演进反映了金融科技领域向数据驱动范式转型的趋势。随着机器学习算法的持续优化,量化预测模型在时序外推准确性方面有望取得进一步突破,这可能对市场定价机制与风险管理实践产生结构性影响。值得注意的是,在推进技术应用的同时,需同步完善数据治理框架,确保模型训练所涉及的敏感金融信息符合隐私保护与合规性要求。 总体而言,FaceCat-Kronos代表了金融分析工具向智能化方向演进的技术探索。它的发展既体现了开源计算生态与专业领域知识的有效结合,也为市场参与者提供了补充传统分析方法的算法工具。未来随着跨学科技术的持续融合,此类系统有望在风险控制、策略回测等多个维度推动投资管理的科学化进程。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值