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

网站建设赛车最新版微信app下载安装

网站建设赛车,最新版微信app下载安装,邵阳市今天新闻,前端是什么工作知识概览 用作单点修改的线段树有4个操作#xff1a; pushup#xff1a;由子节点的信息计算父节点的信息build#xff1a;初始化一棵树modify#xff1a;修改一个区间query#xff1a;查询一个区间 线段树用一维数组来存储#xff1a; 编号是x的节点#xff0c;它的父节…知识概览 用作单点修改的线段树有4个操作 pushup由子节点的信息计算父节点的信息build初始化一棵树modify修改一个区间query查询一个区间 线段树用一维数组来存储 编号是x的节点它的父节点是左儿子是2x右儿子是2x1。 线段树的应用范围如下 线段树相对于树状数组常数比较大。但是线段树用途广泛可以解决许多区间修改区间查询的问题。而树状数组的本质是可以解决单点修改区间查询前缀和的问题。  带懒标记支持区间修改的线段树算法见本人博客【数据结构】线段树算法总结区间修改-CSDN博客【代码总结】线段树算法总结区间修改https://blog.csdn.net/u012181348/article/details/135120038?spm1001.2014.3001.5501 例题展示 题目链接  1275. 最大数 - AcWing题库https://www.acwing.com/problem/content/1277/ 代码 #include cstdio #include cstring #include iostream #include algorithmusing namespace std;typedef long long LL;const int N 200010;int m, p; struct Node {int l, r;int v; // 区间[l, r]中的最大值 } tr[N * 4];void pushup(int u) // 由子节点的信息来计算父节点的信息 {tr[u].v max(tr[u 1].v, tr[u 1 | 1].v); }void build(int u, int l, int r) {tr[u] {l, r};if (l r) return;int mid l r 1;build(u 1, l, mid), build(u 1 | 1, mid 1, r); }int query(int u, int l, int r) {if (tr[u].l l tr[u].r r) return tr[u].v; // 树中节点已经被完全包含在[l, r]中了int mid tr[u].l tr[u].r 1;int v 0;if (l mid) v query(u 1, l, r);if (r mid) v max(v, query(u 1 | 1, l, r));return v; }void modify(int u, int x, int v) {if (tr[u].l x tr[u].r x) tr[u].v v;else{int mid tr[u].l tr[u].r 1;if (x mid) modify(u 1, x, v);else modify(u 1 | 1, x, v);pushup(u);} }int main() {int n 0, last 0;scanf(%d%d, m, p);build(1, 1, m);int x;char op[2];while (m--){scanf(%s%d, op, x);if (*op Q){last query(1, n - x 1, n);printf(%d\n, last);}else{modify(1, n 1, ((LL)last x) % p);n;}}return 0; } 题目链接 245. 你能回答这些问题吗 - AcWing题库高质量的算法题库https://www.acwing.com/problem/content/246/ 题解 横跨左右子区间的最大子段和 左子区间的最大后缀 右子区间的最大前缀需要在线段树节点中添加附加信息。 代码 #include cstdio #include cstring #include iostream #include algorithmusing namespace std;const int N 500010;int n, m; int w[N]; struct Node {int l, r;int sum, lmax, rmax, tmax; } tr[N * 4];void pushup(Node u, Node l, Node r) {u.sum l.sum r.sum;u.lmax max(l.lmax, l.sum r.lmax);u.rmax max(r.rmax, r.sum l.rmax);u.tmax max(max(l.tmax, r.tmax), l.rmax r.lmax); }void pushup(int u) {pushup(tr[u], tr[u 1], tr[u 1 | 1]); }void build(int u, int l, int r) {if (l r) tr[u] {l, r, w[r], w[r], w[r], w[r]};else{tr[u] {l, r};int mid l r 1;build(u 1, l, mid), build(u 1 | 1, mid 1, r);pushup(u);} }int modify(int u, int x, int v) {if (tr[u].l x tr[u].r x) tr[u] {x, x, v, v, v, v};else{int mid tr[u].l tr[u].r 1;if (x mid) modify(u 1, x, v);else modify(u 1 | 1, x, v);pushup(u);} }Node query(int u, int l, int r) {if (tr[u].l l tr[u].r r) return tr[u];else{int mid tr[u].l tr[u].r 1;if (r mid) return query(u 1, l, r);else if (l mid) return query(u 1 | 1, l, r);else{auto left query(u 1, l, r);auto right query(u 1 | 1, l, r);Node res;pushup(res, left, right);return res;}} }int main() {scanf(%d%d, n, m);for (int i 1; i n; i) scanf(%d, w[i]);build(1, 1, n);int k, x, y;while (m--){scanf(%d%d%d, k, x, y);if (k 1){if (x y) swap(x, y);printf(%d\n, query(1, x, y).tmax);}else modify(1, x, y);}return 0; } 参考资料 AcWing算法提高课
http://www.dnsts.com.cn/news/229719.html

相关文章:

  • 创做网站个人网站-个人主页作业
  • 秦皇岛市教育考试院网站wordpress 画线不显示不出来
  • 单位网里建网站南通网站建设电话
  • 基金会网站建设方案wordpress数据库清理
  • 大型门户网站开发教程工商公示信息查询系统官网
  • 互联网公司网站模板平台搭建教程
  • 网站做的好腾讯云如何做网站
  • 免费域名 网站室内设计作品欣赏
  • 如何制作wap网站北京网站开发哪家好
  • 建设网站总结企业站网页制作实训步骤
  • 挑号网站后台怎么更新wordpress动态模板
  • c 做网站怎么连接到别的网页帝国网站数据库配置文件
  • 婚纱影楼网站建设seo排名资源
  • 马可波罗网站做外贸什么网站能接工地做
  • 正一品网站建设太突然我国突然宣布
  • 厦门seo网站最新的军事新闻报道
  • 网站专题页功能用什么技术做网站
  • 如何做条形码网站怎么搞做网站的公司哪里好
  • 淘宝客网站哪里可以做重庆品牌餐饮加盟网站建设
  • 站长之家域名查询大全文献综述 php网站开发
  • 指定目录调用最新文章wordpressseo的优化方案
  • 搭建网站的六个基本步骤流程搜索引擎技术
  • 网站备案拍照点动漫网站怎么做的
  • 成都商务网站建设网站免费网站免费陪玩
  • 校园网站开发阿里巴巴国际网站官网入口
  • 含山建设局网站长沙做网站咨询公司
  • 公司网站现状如何来做网站
  • 微信公众号h5网站开发参与网站建设的人员
  • 律所网站建设管理制度废旧网站那个做的最好
  • 专业整站优化9377传奇全部游戏