`
Dev|il
  • 浏览: 125220 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

HDU1754 I Hate It

 
阅读更多
参考资料:http://www.cppblog.com/MiYu/archive/2010/08/29/125199.html
此题的simple建立的树为:


AC代码:
#include <iostream>
using namespace std;

const int _N = 200005;

int a[_N << 2];

int max(int b, int c)
{
	return b > c ? b : c;
}
//跟新父节点的值
void pushUp(int rt)
{
	a[rt] = max(a[rt << 1], a[rt << 1 | 1]);
}
//建立树
void bulid(int l, int r, int rt)
{
	if(l == r)
	{
		cin>>a[rt];
		return;
	}
	int m = (l + r) >> 1;
	bulid(l, m, rt << 1);
	bulid(m + 1, r, rt << 1 | 1);
	pushUp(rt);
}
//跟新值
void update(int p, int v, int l, int r, int rt)
{
	if(l == r)
	{
		a[rt] = v;
		return;
	}
	int m = (l + r) >> 1;
	if(p <= m)
		update(p, v, l, m, rt << 1);
	else
		update(p, v, m + 1, r, rt << 1 | 1);
	pushUp(rt);
}
//查询最大值
int query(int L, int R, int l, int r, int rt)
{
	int v = 0;
	if(L <= l && r <= R)
		return a[rt];
	int m = (l + r) >> 1;
	if(L <= m)
		v = max(v, query(L, R, l, m, rt << 1));
	if(R > m) 
		v = max(v, query(L, R, m + 1, r, rt << 1 | 1));
	return v;
}
int main()
{
	int n, m;
	while(cin>>n>>m)
	{
		bulid(1, n, 1);
		for(int i = 0; i < m; i++)
		{
			char q;
			int b, c;
			cin>>q>>b>>c;
			if(q == 'Q')
				cout<<query(b, c, 1, n, 1)<<endl;
			else
				update(b, c, 1, n, 1);
		}
	}
	return 0;
}


  • 大小: 63.7 KB
分享到:
评论

相关推荐

    线段树入门学习(兼解HDU1754)

    这篇博客“线段树入门学习(兼解HDU1754)”旨在帮助初学者理解线段树的基本概念,并通过解决HDU1754题目来实践其应用。 线段树的核心思想是将一个区间分解成多个子区间,然后对每个子区间进行预处理,存储区间的信息...

    HDU 1022 Train Problem I 附详细思路

    HDU 1022 Train Problem I 附详细思路

    HDU题目java实现

    14. **IO与NIO**:Java的I/O流系统以及新推出的非阻塞I/O(New IO,即NIO)。 15. **设计模式**:面向对象编程中的常见设计模式,如单例、工厂、观察者、装饰器等,可以提高代码的可读性和可维护性。 以上就是根据...

    hdu.rar_hdu

    HDU(杭州电子科技大学在线评测系统)是一个深受程序员喜爱的在线编程练习平台,它提供了丰富的算法题目供用户挑战,帮助他们提升编程技能和算法理解能力。"hdu.rar_hdu"这个压缩包文件很可能是某位程序员整理的他在...

    HDU_2010.rar_hdu 2010_hdu 20_hdu acm20

    【标题】"HDU_2010.rar"是一个压缩包文件,其中包含了与"HDU 2010"相关的资源,特别是针对"HDU ACM20"比赛的编程题目。"hdu 2010"和"hdu 20"可能是该比赛的不同简称或分类,而"hdu acm20"可能指的是该赛事的第20届...

    hdu动态规划算法集锦

    - 状态转移方程:$f[j] = \max\{f[j], f[j - q[i].money] + q[i].v\}$,其中$q[i].money$是第$i$个地点的价值,$q[i].v$是第$i$个地点的花费。 - 初始条件:$f[0] = 1$(不抢劫任何地方的情况)。 #### 3A:100A:...

    ACM HDU题目分类

    ACM HDU 题目分类 ACM HDU 题目分类是指对 HDU 在线判题系统中题目的分类,总结了大约十来个分类。这些分类将有助于编程选手更好地理解和解决问题。 DP 问题 DP(Dynamic Programming,动态规划)是一种非常重要...

    解题代码 hdu1241

    根据给定的文件信息,我们可以得知这是一段用于解决HDU(Hdu Online Judge)编号为1241的问题的代码。该代码主要采用了深度优先搜索(DFS)算法来解决问题。 #### 二、DFS(Depth First Search)算法原理 **定义:...

    hdu1250高精度加法

    ### hdu1250高精度加法 #### 背景介绍 在计算机科学与编程竞赛中,处理大整数运算(特别是加法、减法、乘法等)是常见的需求之一。当数字的位数超过了标准数据类型(如`int`、`long`等)所能表示的最大值时,就需要...

    HDU1059的代码

    HDU1059的代码

    HDU DP动态规划

    【标题】"HDU DP动态规划"涉及到的是在算法领域中的动态规划(Dynamic Programming,简称DP)技术,这是解决复杂问题的一种高效方法,尤其适用于有重叠子问题和最优子结构的问题。动态规划通常用于优化多阶段决策...

    hdu1001解题报告

    hdu1001解题报告

    hdu 1257 最低拦截系统 lis

    题目名为“hdu 1257 最低拦截系统”,这里的“最低拦截系统”实际上是描述了一个问题场景,而具体的问题通过描述部分可以得知是要求找出给定数组中的最长递增子序列的长度。这里所谓的“最低拦截系统”可能是为了...

    hdu.rar_HDU 1089.cpp_OJ题求和_hdu_horsekw5_杭电obj

    【标题】"hdu.rar_HDU 1089.cpp_OJ题求和_hdu_horsekw5_杭电obj" 提供的信息是关于一个压缩文件,其中包含了一个名为 "HDU 1089.cpp" 的源代码文件,这个文件是为了解决杭州电子科技大学(Hangzhou Dianzi ...

    hdu 1574 passed sorce

    hdu 1574 passed sorce

    ACM HDU

    【ACM HDU】指的是在ACM(国际大学生程序设计竞赛,International Collegiate Programming Contest)中,参赛者在杭州电子科技大学(Hangzhou Dianzi University,简称HDU)的在线评测系统上完成并已解决的题目集合...

    hdu2101解决方案

    hdu2101AC代码

    杭电ACMhdu1163

    【标题】:杭电ACMhdu1163 【描述】:这是一道源自杭州电子科技大学(Hangzhou Dianzi University,简称HDU)的ACM编程竞赛题目,编号为1163。这类问题通常需要参赛者利用计算机编程解决数学、逻辑或算法上的挑战,...

    hdu 5007 Post Robot

    hdu 5007 Post Robot 字符串枚举。 暴力一下就可以了。

Global site tag (gtag.js) - Google Analytics