随笔分类 - 线段树
摘要:题目传送门:https://www.luogu.com.cn/problem/P3384 详解可看:https://blog.csdn.net/a_forever_dream/article/details/80651308 /or/ https://oi-wiki.org/graph/hld/#_
阅读全文
摘要:题目链接:https://codeforces.com/contest/718/problem/C 题意:给出一个序列,有两种操作,操作一:将序列中l-r部分的值加上某个数,操作二:计算Σri=lf(i) 的值第l-r项斐波那契数的和。 思路:首先我们需要解决的问题是计算第n项斐波那契数的值,n的范
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4902 题目大意:给你一串序列an,有两种操作,操作1:将区间l-r内的所有值替换成x,操作2:将区间l-r内大于x的数替换成x和a[i]的最大公约数; 思路:本题需要用lazy标记剪枝,操作一需要将区间
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1698 非常简单的线段树的区间修改问题,稍微不同的就是有三种标记,不同的标记按题意说的更新就行。剩下的套模板就行了。 1 #include<iostream> 2 #include<cstdio> 3 #
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1540 此题的D,R操作非常简单,需要注意的就是Q求和操作,在进行求和的时候,需要检查一下所求点是否都位于左右子树的区间内,如果是的话那么就返回左子树的右连续最长加上右子树的左连续最长,(如果不懂可以画图
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2871 这个题目与线段树区间合并的模板题(链接:点这里)非常相似,就是复杂了一点; 1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm
阅读全文
摘要:题目链接:http://poj.org/problem?id=3667 题目大意:给你一排n个房间,你有两种操作,1操作是占据x个房间,尽量往左占(也就是第一个编号尽可能小),空房间不够输出0,2操作是让你释放从x到x+y-1的房间,让他们成为空房间。 这道题是线段树区间合并的典型例题,我为了解决这
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2795 题意:给你一个高为h,宽为w的板子,以及n个高为1,宽度为wi的公告,如果板子能放下这个公告的话,尽可能将这个公告往上往左放,公告只能横着贴,贴在一行里,如果放不下就输出-1,如果放得下,就输出在
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3074 非常简单的一个线段树单点更新求区间的模板题,只需要把平时存放区间和的数组sum[]用来表示区间的成绩,将Query求和函数,改成求累积即可。 还有一个问题就是,我在hudoj上用C++交会TLE,
阅读全文
摘要:1 #include<iostream> 2 #include<algorithm> 3 #include<cstring> 4 using namespace std; 5 const int N = 32000 + 10; 6 7 int ans[N << 2], sum[N << 2], x,
阅读全文
摘要:题目链接:http://poj.org/problem?id=2182 ac代码: 1 #include<iostream> 2 #include<algorithm> 3 #include<cstring> 4 using namespace std; 5 const int N = 8000 +
阅读全文
摘要:
1 #include<iostream> 2 #include<algorithm> 3 #include<cstring> 4 using namespace std; 5 const int N = 200000 + 10; 6 7 int a[N], Tree[N << 2], ans[N],
阅读全文
