
线段树
H_ang
记录一些东西吧!
展开
-
Codeforces Round #625 E - World of Darkraft: Battle for Azathoth - 线段树
题目链接:https://codeforces.com/contest/1321/problem/E题目大意:有n个武器。每个有属性攻击力:a[i],价格:ca[i]。有m个盾牌。每个有属性防御力:b[i],价格:bc[i]。有k个怪物。每个有防御力xk, 攻击力yk,价值zk。现在你必须并且只能买一个武器和一个盾牌。如果你的攻击力>怪物的防御力并且你的防御力>怪物的攻击力。...原创 2020-03-02 19:23:04 · 365 阅读 · 0 评论 -
2020牛客寒假算法基础集训营2 - 求函数 - 线段树维护组合函数
题目链接:https://ac.nowcoder.com/acm/contest/3003/J题目大意:思路:#include<bits/stdc++.h>#define LL long long#define mid (l+r)/2using namespace std;const LL mod = 1e9+7;struct Node{ int l, r...原创 2020-02-09 16:58:10 · 123 阅读 · 0 评论 -
HDU - 6464 -线段树 第L大与第R之间的数和
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6464题目大意:已知一开始有一个空序列,接下来有Q次操作,每次操作给出type、first和second三个值。当type为1时,意味着该操作属于第一种操作:往序列尾部添加first个second数。当type为2时,意味着该操作属于第二种操作:查询序列中第first小至第second小的数值...原创 2020-02-07 21:54:12 · 183 阅读 · 0 评论 -
Educational Codeforces Round 81 (Rated for Div. 2) - Permutation Separation 线段树维护前缀和最小值
题目链接:https://codeforces.com/contest/1295/problem/E题目大意:有一个数组a[i] i = [1, n] 。让你选择一个k把数组分成a[1]…a[k]。a[k+1]…a[n]两个部分。现在你可以移动每个数到另外一个部分。代价为b[i]。 现在要让左部分所有数都小于右部分。问需要付出的最小代价为多少。思路:我们可以枚举i:左部分的最大值j...原创 2020-02-01 19:57:44 · 201 阅读 · 0 评论 -
codeforces 242-E 区间异或
题目链接:https://codeforces.com/problemset/problem/242/E题目大意:给你n和a[i]…a[n]。m个操作:1 l r 查询a[L]+…+a[R]2 l r x思路:我们用多棵树维护每一位就可以了。#include <bits/stdc++.h>#define LL long longusing namespace s...原创 2020-01-13 12:24:34 · 210 阅读 · 0 评论 -
codeforces 1257 D Yet Another Monster Killing Problem 二分+RMQ+线段树
题目链接:http://codeforces.com/contest/1257/problem/D题目大意:有n个怪物,每个怪物都有一个能力值a。有m个勇士,每个勇士都有一个力量P和耐力S。明天可以选择一个勇士去打怪物,必须按顺序打,如果这个勇士的能力P>=a那么就可以打败这个怪物,就必须打下一个怪物,而且最多一天只能打S个怪物。如果力量P<a。这个勇士就回来。这天结束,每个勇士可...原创 2019-11-14 16:43:22 · 284 阅读 · 0 评论 -
2019-ACM-ICPC 徐州网络赛 B. so easy map并查集 OR 动态开点线段树
题目链接:https://nanti.jisuanke.com/t/41384题目大意:这里线段树不能离散化,n<1e9。但是我们发现询问只有1e6。最多修改1e6次。如果用动态开点。每次最多修改logn个点。空间复杂度O(1e6*log(1e6))。#include<bits/stdc++.h>#define mid (l+r)/2using namespace ...原创 2019-09-07 21:34:12 · 396 阅读 · 0 评论 -
杭电2019多校第三场 HDU-6609 Find the answer (权值线段树+二分)或者(贪心)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6609题目大意:思路一:给出一组数,对于每个数a[i]a[i]a[i]求出最少删除 iii 前面多少个数使得前缀和小于等于mmm。题解:权值线段树维护以iii为右端点的前缀和以及数的个数。 每次查询最多可以取多少个数可以使得前缀和小于等于mmm,假设为cntcntcnt, 那么最后的答案就是 i...原创 2019-08-13 16:49:42 · 174 阅读 · 0 评论 -
2019HDU多校训练第二场 Longest Subarray 推导+线段树
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6602题目大意:给你一个串,问满足以下条件的子串中最长的是多长:对于每个数字,要么在这个子串没出现过,要么出现次数超过k次。转:思路:对于这类问题,常常转化为数据结构的询问问题。我们考虑枚举右端点,对于当前右端点,我们单独考虑每一种数的合法区间。假设当前枚举的右端点是i,考虑的数字是c,在右端点左...原创 2019-08-13 16:40:44 · 201 阅读 · 0 评论 -
线段树专题 树上等差数列
题目链接:https://ac.nowcoder.com/acm/contest/892/D题目大意:思路:线段树维护区间的a1和an, 公差为1。/****** POJ3468*******/#include<bits/stdc++.h>#define ll long longusing namespace std;#define MAX_NODE 400005#...原创 2019-05-12 18:47:32 · 437 阅读 · 0 评论 -
线段树+动态开点+区间更新
题目链接:http://poj.org/problem?id=2528题目大意:贴海报,后面的海报会覆盖前面的海报。问最后还能看见几张海报。1 <= n <= 100001 <= i <= n, 1 <= li <= ri <= 10000000样例解释:思路:普通做法:离散化+add标记,更新如果没有在本区间,并且本标记的add!=0,把标...原创 2019-04-24 17:28:52 · 851 阅读 · 0 评论 -
线段树专题 节点的含义
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1610题目大意:在一条线上绘制一些彩色片段,一些先前绘制的片段可能被后续的一些片段覆盖。您的任务是计算最后可以看到的不同颜色的片段。每个数据集的第一行恰好包含一个整数n,1 <= n <= 8000,等于彩色段的数量。以下n行中的每一行由正好由单个空...原创 2019-01-28 16:32:14 · 241 阅读 · 0 评论 -
线段树专题 开根号的优化
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4027题目大意:有n个战舰都排成一排。我们可以使用我们的秘密武器来使一个区间每个战舰的耐力变成到其原始耐力值的平方根。输入包含几个测试用例,由EOF终止。第一行输入一个整数n第二行包含n个整数Ei,表示从战斗开始到结束的每艘战列舰的耐久值。您可以假设所有耐力值的总和小于2^63。下一行包含一个...原创 2019-01-28 15:58:41 · 594 阅读 · 0 评论 -
线段树专题 线段树+离散化
题目链接:http://poj.org/problem?id=3468题目大意:有一个长为10000000的墙,有1 &lt;= n &lt;= 10000个市长候选人去张贴海报,每个人的海报长度不限。上面的海报会覆盖下面的海报,问你最后能看见哪些海报。思路:这个用线段树add标记维护当前区间的海报就行了,然后就MLE了。两个40000000的数组开不下。于是就必须优化。因为候选人只有10...原创 2019-01-28 15:40:52 · 3039 阅读 · 0 评论 -
2018百度之星资格赛B 区间查询+ 前缀和(线段树)
题目链接:http://bestcoder.hdu.edu.cn/contests/contest_showproblem.php?cid=820&amp;pid=1002题目大意: 多样例测试 第一行 T 样例次数 第二行n, q,(n字符串长度, q询问次数) 第三行输入字符串只包含大写字母 接下来m行每行输入l, r 1&lt;=T&lt;=20, 1&lt;= ...原创 2018-08-28 17:33:05 · 389 阅读 · 0 评论 -
牛客网25 b题+最长连续上升区间+线段树
题目链接:给你一个长度为 n 的序列 a ,求最长的连续的严格上升区间的长度。 同时会进行 m 次修改,给定 x , y ,表示将 ax 修改为 y ,每次修改之后都要求输出答案。、 思路:开始拿到题准备用线段树的,维护区间的最长连续上升区间,但是区间合并时无法维护。后来NYX在网上找到了模板,线段树做的, (还是要多做题),当时这道题A了,自己也准备研究别人怎么维护的,因为中间去学习...原创 2018-08-31 21:26:23 · 488 阅读 · 0 评论