HDU1754 I Hate It (Splay)

在win10系统上安装opnet14.5注意事项和步聚 opnet 14.5安装避坑! 阅读详情

题意:中文题。。。

以前用线段树写过。。现在学Splay,也来写一下。。

用伸展树来进行单点更新和区间查询,单点更新就直接查选第k个直接查选到这个点然后再维护上去就可以了,,区间查选,因为这里是闭区间,所以要先把区间扩大一下(自己用手写下就知道),然后第k个找到左边界的点,旋转到根,找到右边界的点旋转到根的右子树,然后右边界的点的左子树就是要找的答案了。。

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int MAXN=222222;
struct Node
{
	Node *ch[2];
	Node *pre;
	int size,val,mx;
}p[MAXN];
int num[MAXN];
int tot;
Node *null=&p[0];
Node *root;
Node *new_Node(int val)
{
	Node *rt=&p[++tot];
	rt->val=val;
	rt->size=1;
	rt->ch[0]=null;
	rt->ch[1]=null;
	rt->pre=null;
	return rt;
}
void pushup(Node *rt)
{
	rt->mx=max(rt->val,max(rt->ch[0]->mx,rt->ch[1]->mx));
	rt->size=rt->ch[0]->size+rt->ch[1]->size+1;
}
Node *build(int l,int r)
{
	if(l>r)
		return null;
	Node *rt;
	int mid=(l+r)>>1;
	rt=new_Node(num[mid-1]);
	rt->ch[0]=build(l,mid-1);
	rt->ch[0]->pre=rt;
	rt->ch[1]=build(mid+1,r);
	rt->ch[1]->pre=rt;
	pushup(rt);
	return rt;
}
void Rotate(Node *x,int c)
{
	Node *y=x->pre;
	y->ch[!c]=x->ch[c];
	if(x->ch[c]!=null)
	{
		x->ch[c]->pre=y;
	}
	x->pre=y->pre;
	if(y->pre!=null)
	{
		if(y->pre->ch[0]==y)
			y->pre->ch[0]=x;
		else
			y->pre->ch[1]=x;
	}
	x->ch[c]=y;
	y->pre=x;
	if(y==root)
		x=root;
	pushup(y);
	pushup(x);
}
void splay(Node *x,Node *f)
{
	while(x->pre!=f)
	{
		if(x->pre->pre==f)
		{
			if(x->pre->ch[0]==x)
			{
				Rotate(x,1);
			}
			else
			{
				Rotate(x,0);
			}
		}
		else
		{
			Node *y=x->pre,*z=y->pre;
			if(z->ch[0]==y)
			{
				if(y->ch[0]==x)
				{
					Rotate(y,1);
					Rotate(x,1);
				}
				else
				{
					Rotate(x,0);
					Rotate(x,1);
				}
			}
			else
			{
				if(y->ch[1]==x)
				{
					Rotate(y,0);
					Rotate(x,0);
				}
				else
				{
					Rotate(x,1);
					Rotate(x,0);
				}
			}
		}
	}
	pushup(x);
}
Node *kth(Node *rt,int k)
{
	if(rt->ch[0]->size+1==k)
		return rt;
	if(k<=rt->ch[0]->size)
		return kth(rt->ch[0],k);
	else
		return kth(rt->ch[1],k-(rt->ch[0]->size)-1);
}
int main()
{
	int n,m,i;
	Node *L,*R;
	while(scanf("%d%d",&n,&m)==2)
	{
		for(i=1;i<=n;i++)
			scanf("%d",&num[i]);
		tot=0;
		num[0]=0;
		num[n+1]=0;
		root=build(1,n+2);
		char op[2];
		int x,y;
		while(m--)
		{
			scanf("%s%d%d",op,&x,&y);
			if(op[0]=='Q')
			{
				y+=2;
				L=kth(root,x);
				R=kth(root,y);
				splay(L,null);
				splay(R,L);
				printf("%d\n",R->ch[0]->mx);
				root=L;
			}
			else
			{
				x++;
				L=kth(root,x);
				splay(L,null);
				root=L;
				root->val=y;
				pushup(root);
			}
		}
	}
	return 0;
}


OSError We couldn‘t connect to https://huggingface.co to load file, couldn‘t find it chatglm3-6b解决方案 本文主要介绍了OSError: We couldn’t connect to https://huggingface.co to load this file, couldn’t find it in the cached files and it looks like THUDM/chatglm3-6b is not the path to a directory containing a file named config.json.解决方案,希望能对学习python的同学们有所帮助。 阅读详情

相关推荐

lumerical中DEVICE和MODE模块的交互使用(真的很干货!!可以自信的说网上绝对找不到比我更详细的步骤了)

几个脚本文件很重要! Lumerical仿真流程: 一、DEVICE: (1).建模并且运行完之后,在脚本提示符下键入以下脚本行以运行plotDopingProfile.lsf如图1(文件名如果索引不到的话就可以把文件直接用notepad++打开,然后把代码直接输入到device中script脚本中 如图2)脚本文件并生成下图 如图3: (图2) (图1) (图3) (2).仿真...

1万+

HDU-1754:I Hate It(splay结构体做法)

HDU-1754:I Hate It(splay结构体做法)很多学校流行一种比较的习惯。老师们很喜欢询问,从某某到某某当中,分数最高的是多少。 这让很多学生很反感。 不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的询问。当然,老师有时候需要更新某位同学的成绩。 本题目包含多组测试,请处理到文件结束。 在每个测试的第一行,有两个正整数 N 和 M ( 0<N<=200000,0<M<5000 ),分别代表学生的数目和操作的数目。 学生ID编号分别从1编到N。 第二行包含N个整数,

Mitsuha_的博客 567

手机耳机麦克风(ECM)电路设计实战:从差分走线到射频干扰滤波,一个电阻引发的灵敏度问题

本文深入探讨了手机耳机麦克风(ECM)电路设计中的关键问题,从差分走线到射频干扰滤波,特别关注了一个电阻引发的灵敏度问题。通过实际案例分析,详细解析了ECM麦克风工作原理、偏置电阻选型、差分信号传输设计以及射频干扰抑制策略,为工程师提供了实用的设计指南和优化建议。

weixin_42563415的博客 244

hdu 1754 I Hate It (Splay)

点修改,区间查询。可以用线段树,也可以用Spaly树。用来练习Spaly树吧。。学习Splay树的话推荐一个博客:点击打开链接。 #include #include #include #include #include using namespace std; const int N = 201000; const int INF = 0x3f3f3f3f; int pre[N], key[N

ok_again的专栏 1270

CubeMX配置ADC+DMA避坑实战:如何避免采样过快导致的系统崩溃

本文针对STM32开发中常见的ADC采样过快导致程序卡死问题,提供了基于CubeMX的实战避坑指南。通过分析ADC与DMA协作机制,详解时钟配置、采样时间、DMA缓冲区长度及中断设置等关键步骤,帮助开发者从源头规避系统崩溃风险,实现稳定可靠的数据采集。

weixin_28273593的博客 324

计算文本相似度的常用算法

NLP、数据挖掘领域中,文本分析是一个很重要的领域,这有助于我们去让计算机理解语言的作用和使用。文本分析是数据挖掘的重要手段,利用文本分析,我们将很快的读取到一本书、一篇文章、一段话中的关键词和核心思想,而文本相似度就是我们用来剔除无用信息或者重复信息的重要手段,让计算机去找文本中的不同。 在生活中,信息检索、数据挖掘、机器翻译、文档复制检测等领域都应用到“文本相似度”。文本不仅仅是文字,文本相似度的应用更广,除了文字的匹配,还可以是图片、音频等,因为它们的实质都是在计算机中都是以二进制的方式存在的。相.

氧小氢的博客 2万+

【Splay】 HDU 1754 I Hate It

点击打开链接 区间最值模板  需要在两端设置两个结点( 查询 [ l, r ] 时需 将 l-1 转到根结点,r+1转到l-1的儿子结点 这时 r+1的左儿子就是答案   #include #include #include #include #include #include #include using namespace std; #include #include

Kewowlo 708

[亚信线上教学] AX58100: EtherCAT从站设备仿真功能设计教学

什么情况需要开启EtherCAT从站设备仿真功能呢? 一般来说, 当EtherCAT从站产品,不需要使用额外的微控制器介入,或使用不具备EtherCAT从站通讯协议栈的微控制器一同协作的情况下,就必须开启EtherCAT从站设备仿真功能,这样EtherCAT主站才能够正常设置从站设备的工作状态. 亚信AX58100 EtherCAT从站控制芯片的优点 AX58100 EtherCAT从站控制器, 集成2个百兆以太网Phis, 并支持一些额外的控制接口, 例如脉冲宽度调变, 增量, 霍尔编码器, .

allanchou1的专栏 7425

[HDU 1754] I Hate It Splay

继续splay。。。。

AcmHonor的专栏 459

基于Simulink的自适应反步法(Adaptive Backstepping)控制​

本文针对非线性系统控制中未知参数和强非线性耦合的挑战,提出基于Simulink的自适应反步法解决方案。通过融合参数在线估计与反步递归设计,该方法显著提升了永磁同步电机(PMSM)速度控制的鲁棒性,使跟踪误差从20%降至3%,参数估计收敛时间小于0.5秒。文章详细阐述了从算法推导到Simulink实现的完整流程,包括系统架构设计、核心算法推导(以PMSM为例)、模块化建模方法、参数优化策略以及工程部署建议。提供的自适应控制器MATLAB代码和关键参数表可直接应用于实际工程,为电机驱动、机械臂等非线性系统控制提

xiaoheshang_123的博客 101

STM32H743的FDCAN使用方法(1):STM32CubeMX初始化代码生成

STM32H743的FDCAN使用方法(1):STM32CubeMX初始化代码生成。

kevin1499的博客 2567

hdu 1754 I Hate It(splay入门题)

I Hate It Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 11703    Accepted Submission(s): 4478 Problem Description 很多学校流行一种比较的习惯。老

志当存高远 1458

Sentaurus TCAD建模:宽温区n型FinFET模型校准与低温仿真分析

本文基于Sentaurus TCAD平台,建立了n型FinFET的宽温区(233K-393K)仿真模型,解决了低温(73K-193K)仿真失效问题。研究对比了Sprocess工艺仿真与SDE几何建模两种方法,分析了载流子冻析效应、不完全电离和迁移率退化等低温物理机制。通过优化模型参数,实现了在233K、313K和393K条件下仿真误差小于10%,并建立了符合物理趋势的低温外推模型。研究提供了完整的Sentaurus TCAD代码实现,包括器件结构定义、物理模型配置和温度相关参数校准,为宽温区FinFET仿真

huanghm88的专栏 265

hdu1754 I Hate It(splay或者线段树)

I Hate It Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 27434    Accepted Submission(s): 10889 Problem Description 很多学校流行一种比较的习惯。

ophunter的专栏 1025

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

hdu 1754 I Hate It (splay tree伸展树)

hdu 1754 I Hate It 其实我只是来存一下我的splay模板的。。请大牛们多多指教 #include #include #include using namespace std ; const int maxn = 222222 ; int son[2][maxn] , col[maxn] , fa[maxn] , size[maxn] , val[maxn] ; int t

No__stop 1693

IMSL CNL 7.0.0 (x86-64)Crack

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

hdu 1754 I Hate It(Splay练习)

【题意】 N个数,M个操作。Q A B,查询区间[A,B]的最大值;U A B,把点A的值改为B。 【分析】 线段树显然可以秒掉。 splay小练习。 Splay代码 1 /* 2 http://acm.pku.edu.cn/JudgeOnline/problem?id=3468 3 区间跟新,区间求和 4 */ 5 #include...

dechi5213的博客 133

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

HDU 1754 I Hate It (Splay 区间操作)

题目大意 维护一个序列,支持两种操作 操作一:将第x个元素的值修改为y 操作二:询问区间【x,y】内的元素的最大值 解题分析 splay的区间操作,事先加入两个编号最小和最大的点防止操作越界。 具体的区间操作类似于线段树。 参考程序 #include <bits/stdc++.h> using namespace std; const int INF=2000000000; ...

aekijekzn484879763的博客 186

hdu1754 I hate it【splay树】

Description 很多学校流行一种比较的习惯。老师们很喜欢询问,从某某到某某当中,分数最高的是多少。 这让很多学生很反感。 不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的询问。当然,老师有时候需要更新某位同学的成绩。   Input 本题目包含多组测试,请处理到文件结束。 在每个测试的第一行,有两个正整数 N 和

MissZhou要努力 575

【线段树 Splay】 hdu 1754 I Hate It

线段树 /*happywu * hdu 1754 * 2014.8.14 */ #include #include using namespace std; const int maxn=200000+10; struct Node { int key,Max; }Tree[maxn*4]; int n,A[maxn],m,l,r,x; char com=0; inline void P

BiuBiuBiu 415

HDU - 1754 I Hate It(Splay-区间最大值)

题目链接:点击查看 题目大意:初始时给出 n 个数字组成的数列,接下来有 m 次操作,分别对应着区间查询最大值以及单点修改,实现 m 次操作 题目分析:线段树裸题,就不多说了,Splay的话,就在每个节点再维护一个 val 和一个 mmax 分别代表点权和子树的最大值,单点修改很简单,只需要找到对应的节点修改权值就好了,而区间查询也非常的巧妙,首先将 l - 1 这个节点旋到根节点处,这样根节...

Falcon的博客 537

hdu1754I Hate It(splay)

链接 线段树的水题,拿来学习一下splay. 本题涉及到求最大值以及单点更新,折腾了许久,差不多把splay搞明白了。 按位置建树,按位置是一颗排序二叉树,对于区间的操作非常方便,每次操作都将需要的结点转自根的右孩子的左孩子,因为加了2个结点,一个最小的,一个最大的,据说是为了防止越界。 这题只有单点,所以每次将所求结点旋自根节点即可。 1 #include <iost...

weixin_30267697的博客 110

HDU 1754 I Hate It (Splay tree和Segment tree)

线段树的模版题,求区间最值和修改一个值,用Splaytree来写更简单! 伸展树code: #include #include using namespace std; #define lson x->ch[0] #define rson x->ch[1] #define ket (root->ch[1]->ch[0]) const int maxn = 2

JayYe的专栏 1111

HDU 1754 I Hate It 线段树 && Splay && zkw线段树

线段树 Splay Tree zkw非递归版本线段树

Gorden的博客 562

HDU 1754 I Hate It (splay区间最值单点修改模板)

事实证明,高级数据结构的内存很蛋疼- - 一定要记得删除内存// // Created by CQU_CST_WuErli // Copyright (c) 2015 CQU_CST_WuErli. All rights reserved. // // #include<bits/stdc++.h> #include <iostream> #include <cstring> #includ

只玩三国的程序猿的专栏 616

HDU-1754 I Hate It (线段树裸题 splay模板 单点修改 区间询问最大值)

单点修改,区间询问最大值,线段树裸题,用来练习splay相应的操作。题意:2e5个学生,5e3次操作,每次操作要么修改某个学生的成绩,要么询问某个区间内最高的分数。多cases。

hmc0411的博客 673

HDU 1754 I Hate It

水题,Splay做下。 #include #include #include #include using namespace std; #define N 200005 #define mod 20140518 const int inf = (1 << 29); typedef long long LL; int n, m; int pre[N], key[N], ch[N][2],

DBL 607
上一篇: HDU3157 Crazy Circuits
下一篇: POJ3481 Double Queue (Splay)
eeeaaaaa
博客等级 码龄12年 2粉丝 155原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值