线段树
1
1E6
这个作者很懒,什么都没留下…
展开
-
Can you answer these queries?(区间修改+区间查询)
题目链接: Can you answer these queries? 大致题意: 给一个正整数n,有两种操作 1.使区间[l,r]中的每一个数开方 2.查询区间[l,r]的和 解题思路: 区间修改+区间查询 AC代码: #include <bits/stdc++.h> using namespace std; typedef long long ll; const int N = 1e5 + 10; int n, m; ll w[N]; struct node { int l, r;原创 2021-01-17 21:23:27 · 131 阅读 · 0 评论 -
A Simple Problem with Integers(区间修改+区间查询)
题目链接: A Simple Problem with Integers 大致题意: 两种操作: 1.区间[l,r]都增加v 2.查询区间[l,r]所有元素的和 解题思路: 区间修改+区间查询 AC代码: #include<iostream> #include<algorithm> #include<cstring> using namespace std; typedef long long ll; const int N = 1e5 + 10; int n, m原创 2021-01-16 22:44:02 · 97 阅读 · 0 评论 -
Just a Hook(区间修改)
题目链接: Just a Hook 大致题意: 给定一个n, 对于区间[1, n]有如下操作: 选定l, r, 把[l, r]区间全部修改为数值c 最后输出[1, n]的区间和 解题思路: 区间修改 + 根结点查询 AC代码: #include <bits/stdc++.h> using namespace std; typedef long long ll; const int N = 1e5 + 10; int n, m; struct node { int l, r; int s原创 2021-01-14 21:37:30 · 246 阅读 · 0 评论 -
HDU - 1540 Tunnel Warfare
题目链接: Tunnel Warfare 大致题意: 多组! 给出n个点,排成一列,点与点之间互通 有三种操作: 删除第x个点. 询问点x所处的最大连通区间的长度 最后删除的点被恢复 解题思路: 单点修改+区间查询 维护的值有当前该点的最大连通长度sum,该点左侧最大连通长度lmax,该点右侧最大连通长度rmax 删除较简单,查询分两种情况: 1.x在当前区间的左子树上 若x处于左子树的rmax内部, 则结果为左子树的rmax + 右子树的lmax 。否则以左子树作为新的区间进行递归 2.x在当前区原创 2021-01-12 17:20:03 · 60 阅读 · 0 评论 -
HDU - 1754 I Hate It
题目链接: I Hate It 大致题意: 解题思路: 线段树模板题,考察单点修改区间查询,维护的是区间的最大值 AC代码: #include <bits/stdc++.h> using namespace std; const int N = 2e5 + 10; int n, m; int w[N]; struct node { int l, r; int maxx; }t[N * 4]; void pushup(int index) { t[index].maxx = max(原创 2021-01-12 16:20:41 · 81 阅读 · 0 评论