hdu 1754 线段树
来源:互联网 发布:花呗只能在淘宝用吗 编辑:程序博客网 时间:2024/05/21 22:40
链接:http://acm.hdu.edu.cn/showproblem.php?pid=1754
题目很基本,线段树的单点更新和区间求最值,前面有相似题,但TLE了几次,感觉没错啊,结果看了下别人的代码,差了个getchar(),原因是如果不加,则会把回车当成字符了,我勒个去...
AC code:
#include<stdio.h>#include<iostream>using namespace std;int a[200002];int max(int a,int b) { return a>b?a:b; }struct T{ int left,right; int Max;}Tree[800001];void InitTree(int left,int right,int num){ if(left==right) { Tree[num].left=left; Tree[num].right=right; Tree[num].Max=a[left]; return ; } else { Tree[num].left=left; Tree[num].right=right; //Tree[num].Max=right; int mid=(Tree[num].left+Tree[num].right)>>1; InitTree(left,mid,num<<1); InitTree(mid+1,right,(num<<1)+1); Tree[num].Max=max(Tree[2*num].Max,Tree[2*num+1].Max); }}void Update(int x,int change,int num){ if(Tree[num].left==x&&Tree[num].right==x) { Tree[num].Max=change; return ; } else { int mid=(Tree[num].left+Tree[num].right)>>1; if(x<=mid) Update(x,change,num<<1); else Update(x,change,(num<<1)+1); Tree[num].Max=max(Tree[(num<<1)].Max,Tree[(num<<1)+1].Max); }}int Search(int st,int ed,int num){ if(Tree[num].left==st&&Tree[num].right==ed) { return Tree[num].Max; } else { int mid=(Tree[num].left+Tree[num].right)>>1; if(ed<=mid) return Search(st,ed,num<<1); else if(st>mid) return Search(st,ed,(num<<1)+1); else { return max(Search(st,mid,(num<<1)),Search(mid+1,ed,(num<<1)+1)); } }}int main(){ int N,M,i,j,s,t; char str[9]; while(scanf("%d%d",&N,&M)!=EOF) { memset(a,0,sizeof(0)); for(j=1;j<=N;++j) scanf("%d",&a[j]); InitTree(1,N,1); while(M--) { getchar(); ///////////!!!!!! cin>>str>>s>>t; if(str[0]=='Q') printf("%d\n",Search(s,t,1)); else if(str[0]=='U') Update(s,t,1); } } }
- hdu 1754 线段树
- hdu 1754 线段树
- hdu 1754 线段树
- 【线段树】hdu 1754
- hdu 1754 线段树
- hdu 1754 线段树
- hdu 1754 线段树
- hdu 1754 线段树
- HDU 1754 线段树
- HDU -1754线段树
- HDU 1754 线段树
- hdu 1754 线段树
- hdu 1754 线段树
- HDU 1754 线段树
- hdu 1754(线段树)
- HDU 1754 线段树
- HDU 1754 线段树
- HDU 1754 线段树
- Asp.net中实现ImageButton的鼠标移人(出)图片变换
- jqplot 饼图
- HDU 1210
- SQL PASS西雅图之行——University of Washington篇
- QtQuick,qt3d在windows下打包单一exe(待详细)
- hdu 1754 线段树
- normalizing the database.
- 比较难 如何手工 或编程实现 调用 X.509 certificate 签名的 https WCF Service
- LZO 2.06 使用帮助和介绍
- 所理解Java中的堆和栈
- Write a program to print the fibonacci series sum upto a particular no. using recursion.
- Bitwise add/Multipy
- Xlib: connection to ":0.0" refused by server解决方法
- SAP HANA之异军突起 (数据库各厂商发展历史.9. )