CODEVS(WIKIOI) 2018 反病毒软件(线段树)

本文介绍了一种使用线段树解决城市值查询问题的方法,包括点修改和区间查询最大值与次大值之差。通过维护节点的最大值与次大值及其对应的城市编号,确保了查询结果的准确性。

n个城市,点修改,区间询问最大值与第二大值之差,很明显的线段树。此题有点水。

求最大值与第二大值之差,就维护最大值与第二大的值,每次修改时更新值。

设最大值为fir,第二大为sec,如果x<sec则不修改,如果x>fir,把fir变成x,sec变成fir,如果fir<x<sec,sec=x;

这样子看上去好像对了但实际上会WA,为什么呢?这样子做的话会出现这种情况:

1-5: fir:5(3号城市) sec:2(1号城市)

如果再对于3号城市加上3,那么因为5+3=8>5(fir) sec=5,fir=8(都是3号城市,但sec是历史值),就不是第一、二大的城市之差。

所以还应该记录第一、二大值所在城市,如果x>fir,并且城市相同,直接fir=x。

查询时全局设变量maxn,secn,记录当前查询到的第一、二大的值,并且每次查询前初始化为0。

#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <string>
#include <queue>
#include <climits>
#include <ctime>
#include <stack>
#include <iostream>
using namespace std;
int maxn=0,secn=0;
class node{
public:
	int l,r,fir,sec,fc,sc;
	node *lt,*rt;
	node(){
		l=0,r=0,fir=0,sec=0,fc=0,sc=0;
		lt=NULL,rt=NULL;
	}
	void build(int ll,int rr)
	{
		l=ll,r=rr;
		if(rr-ll>1){
			int mid=(l+r)>>1;
			lt=new node;
			lt->build(ll,mid);
			rt=new node;
			rt->build(mid,rr);
		}
	}
	int insert(int num,int inc)
	{
		if(num==l &&num+1==r){fir+=inc;return fir;}
		int mid=(l+r)>>1,tmp;
		if(num<mid) tmp=lt->insert(num,inc);
		if(num>=mid) tmp=rt->insert(num,inc);
		if(tmp==0 || tmp<=sec) return 0;
		if(tmp>fir){
			if(fc==num) fir=tmp;
			else{
				sc=fc,sec=fir;
				fc=num,fir=tmp;
			}
		}
		else sec=tmp,sc=num;
		return tmp;
	}
	void que(int ll,int rr){
		if(ll==l && r==rr){
			if(sec>maxn) secn=maxn,maxn=sec;
			else if(sec>secn) secn=sec;
			if(fir>maxn) secn=maxn,maxn=fir;
			else if(fir>secn) secn=fir;
			return;
		}
		int mid=(l+r)>>1;
		if(rr<=mid) lt->que(ll,rr);
		else if(ll>=mid) rt->que(ll,rr);
		else lt->que(ll,mid),rt->que(mid,rr); 
	}
}*tree;
int n,q;
int main()
{
	int x,y,c;
	scanf("%d%d",&n,&q);
	tree=new node;
	tree->build(1,n+1);
	for(int i=1;i<=q;i++){
		scanf("%d%d%d",&c,&x,&y);
		if(c==1) tree->insert(x,y);
		else maxn=0,secn=0,tree->que(x,y+1),printf("%d\n",maxn-secn);
	}
	system("pause");
	return 0;
}


【RIS 辅助的 THz 混合场波束斜视下的信道估计与定位】在混合场波束斜视效应下,利用太赫兹超大可重构智能表面感知用户信道与位置(Matlab代码实现)内容概要:本文围绕“IS 辅助的 THz 混合场波束斜视下的信道估计与定位”展开,重点研究在太赫兹(THz)通信系统中,由于混合近场与远场共存导致的波束斜视效应下,如何利用超大可重构智能表面(RIS)实现对用户信道状态信息和位置的联合感知与精确估计。文中提出了一种基于RIS调控的信道参数估计算法,通过优化RIS相移矩阵提升信道分辨率,并结合信号到达角(AoA)、到达时间(ToA)等信息实现高精度定位。该方法在Matlab平台上进行了仿真验证,复现了SCI一区论文的核心成果,展示了其在下一代高频通信系统中的应用潜力。; 适合人群:具备通信工程、信号处理或电子信息相关背景,熟悉Matlab仿真,从事太赫兹通信、智能反射面或无线定位方向研究的研究生、科研人员及工程师。; 使用场景及目标:① 理解太赫兹通信中混合场域波束斜视问题的成因与影响;② 掌握基于RIS的信道估计与用户定位联合实现的技术路径;③ 学习并复现高水平SCI论文中的算法设计与仿真方法,支撑学术研究或工程原型开发; 阅读建议:此资源以Matlab代码实现为核心,强调理论与实践结合,建议读者在理解波束成形、信道建模和参数估计算法的基础上,动手运行和调试代码,深入掌握RIS在高频通信感知一体化中的关键技术细节。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值