当前位置: 首页 > news >正文

网站文章图片如何跳转/关键词研究工具

网站文章图片如何跳转,关键词研究工具,网站上线如何做公司名字,excel网站建设题目 区间最小值查询,但是支持对数组中的任意数字进行修改。 分析 采用RMQ_ST算法的O(1)算法不支持修改,因为每次修改都要重新设置动归数组。因此采用线段树解决,修改和查询的复杂度均为O(logN). 在实现的时候所犯的错误:每次…

题目

    区间最小值查询,但是支持对数组中的任意数字进行修改。

分析

    采用RMQ_ST算法的O(1)算法不支持修改,因为每次修改都要重新设置动归数组。因此采用线段树解决,修改和查询的复杂度均为O(logN). 
    在实现的时候所犯的错误:每次更新一个数字的时候,走到线段树的某个节点,则直接 判断线段树的当前节点代表区间的最小值cur_min是否小于value, 如果大于则更新为value.这样做没有考虑到,当前所要更改的位置就是当前节点区间内最小值的位置,这样cur_min就无效了。 
    因此,还是需要从上到下找到线段树的叶子节点进行更新,之后递归返回的时候,利用子节点的min来更新父节点的min。 
    逻辑一定要严密!!!

实现

#include<iostream>
#include<string.h>
#include<iostream>
#include<queue>
#include<cmath>
#include<unordered_map>
#include<unordered_set>
#include<string>
#include<vector>
using namespace std;
const int inf = 1 << 29;
const int kMax = 10005;
struct Node{int beg;int end;int min;Node(){min = inf;}
};
Node gNodes[4 * kMax];
int weight[kMax];
void BuildTree(int node, int beg, int end){gNodes[node].beg = beg;gNodes[node].end = end;if (beg == end){gNodes[node].min = weight[beg];return;}int left = 2 * node + 1, right = 2 * node + 2;int mid = (beg + end) / 2;BuildTree(left, beg, mid);BuildTree(right, mid + 1, end);//更新完子节点之后,再更新父节点gNodes[node].min = gNodes[left].min < gNodes[right].min ? gNodes[left].min : gNodes[right].min;	
}void Update(int node, int id, int value){if (id < gNodes[node].beg || id > gNodes[node].end)return;if (id == gNodes[node].beg && id == gNodes[node].end){gNodes[node].min = value;return;}int left = 2 * node + 1, right = 2 * node + 2;int mid = (gNodes[node].beg + gNodes[node].end) / 2;if (mid >= id){Update(left, id, value);}else{Update(right, id, value);}//更新完子节点之后,再更新父节点gNodes[node].min = gNodes[left].min < gNodes[right].min ? gNodes[left].min : gNodes[right].min;
}
int Query(int node, int beg, int end){if (gNodes[node].beg == beg && gNodes[node].end == end){return gNodes[node].min;}int left = 2 * node + 1, right = 2 * node + 2;int mid = (gNodes[node].beg + gNodes[node].end) / 2;if (mid >= end){return Query(left, beg, end);}else if (mid < beg){return Query(right, beg, end);}else{int left_min = Query(left, beg, mid);int right_min = Query(right, mid + 1, end);return left_min < right_min ? left_min : right_min;}
}
int main(){int n;scanf("%d", &n);for (int i = 0; i < n; i++){scanf("%d", &weight[i]);}BuildTree(0, 0, n - 1);scanf("%d", &n);int cmd, beg, end;for (int i = 0; i < n; i++){scanf("%d %d %d", &cmd, &beg, &end);		if (cmd == 0){int result = Query(0, beg-1, end-1);printf("%d\n", result);}else{Update(0, beg-1, end);}}return 0;
}

 

转载于:https://www.cnblogs.com/gtarcoder/p/5541089.html

http://www.lbrq.cn/news/1304551.html

相关文章:

  • 深圳定制网站制作/b站推广入口2023mmm
  • 用liferay做的网站/电子商务
  • 做货代用什么网站找客户/线上销售平台有哪些
  • f型网站/极速一区二区三区精品
  • 做食品网站有哪些东西/网站推广的几种方法
  • 别墅装修装饰/成都百度seo优化公司
  • 南阳建网站企业有哪些/电商怎么做新手入门
  • 视频网站开发费用/seo诊断站长
  • 网站建设与网页制作技术/免费推广引流平台推荐
  • 网站关键词没有排名/seo软件优化
  • 网站项目设计流程案例/网站设计服务企业
  • 怎么建立网站文件夹/网址之家大全
  • 众云网联做的网站效果好吗/太原seo网站优化
  • 哪个网站可以做代销/百度推广登录网址
  • 做网站租空间/seo关键词排名优化的方法
  • 单页的网站怎么做的/百度投流运营
  • 网站广告推广哪家好/百度seo推广方案
  • 湖南智能网站建设费用/哪里有永久免费建站
  • 广州疫情防控最新消息/站长工具seo查询
  • wordpress 导航站点/短信广告投放软件
  • 做网站选关键词/十大营销策略
  • 东莞网站推广策划活动/seo是做什么工作的
  • 品牌设计案例网站/手机百度高级搜索入口
  • 如何的找网站建设公司/渠道网络
  • 网站是不是用cms做的/广西seo搜索引擎优化
  • 如何做网站meta设置/百度卖货平台
  • 织梦网站怎么重新安装教程/2022最近的新闻大事10条
  • 东莞网站优化软件/360收录查询
  • 做视频网站要多大的主机/百度网盘怎么用
  • 高端网站建设文案/有没有免费的写文案的软件
  • RPG60.生成可拾取物品
  • nastools继任者?极空间部署影视自动化订阅系统『MediaMaster』
  • 游戏盾能否保护业务免受DDoS攻击吗?
  • 图片上传实现
  • 集群聊天服务器各个类进行详解
  • 强化第三讲—一元函数微分学的概念