hdu 1754 I Hate It(线段树水题)
2024-08-24 12:24:35
思路:线段树水题,可以手敲
#include<string>
#include<iostream>
#include<algorithm> #define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1 using namespace std; const int maxn = 2e5 + ; int tree[maxn << ]; void build(int l, int r, int rt)
{
if (l == r){
cin >> tree[rt];
return;
}
int m = (l + r) >> ;
build(lson);
build(rson);
tree[rt] = max(tree[rt << ], tree[rt << | ]);
}
void update(int x, int ans, int l, int r, int rt)
{
if (l == r){
tree[rt] = ans;
return;
}
int m = (l + r) >> ;
if (x <= m)update(x, ans, lson);
else update(x, ans, rson);
tree[rt] = max(tree[rt << ] , tree[rt << | ]);
}
int query(int L, int R, int l, int r, int rt)
{
if (L <= l&&r <= R){
return tree[rt];
}
int m = (l + r) >> , ans = ;
if (L <= m)ans = max(ans, query(L, R, lson));
if (R > m)ans = max(ans, query(L, R, rson));
return ans;
}
void Print(int l, int r, int rt)
{
if (l == r){
cout << rt << " = " << tree[rt] << endl;
return;
}
cout << rt << " = " << tree[rt] << endl;
int m = (l + r) >> ;
if (l <= m)Print(lson);
if (r > m)Print(rson);
}
int main()
{
std::ios::sync_with_stdio(false); int n, q;
while (cin >> n >> q){
build(, n, );
string flag; int i, j;
while (q--){
cin >> flag >> i >> j;
if (flag == "U"){
update(i, j, , n, );
// Print(1, n, 1);
}
else if (flag == "Q"){
cout << query(i, j, , n, ) << endl;
}
} } return ;
}
最新文章
- Github团队开发示例(二)
- Android中 int,float,Double,String 互相转换
- nginx访问日志获取访问前10的url
- 使用WITH AS提高性能简化嵌套SQL(转)
- POJ 2117 (割点+连通分量)
- Smart210学习记录------paltform总线
- POJ 3253 Fence Repair(优先队列,哈夫曼树,模拟)
- 【Servlet】doGet()与doPost()的区别
- codeforces #309 div1 A
- js 中中括号,大括号使用详解
- 如何让div出现滚动条
- 基于visual Studio2013解决面试题之0707最小元素
- Shell的学习就从重装系统开始吧
- python单元测试框架unittest总结
- 关于video标签移动端开发遇到的问题,获取视频第一帧,全屏,自动播放,自适应等问题
- 解决IDEA安装Python插件,下载失败的方法
- 数据库vertica 脚本方式的导入导出
- ThreeJS笔记(一)
- 第K大01背包
- 使用wireshark抓包工具 检测不到本地网卡