【线段树】
sugarbliss
我想要的不多,只是和多数人不一样。
展开
-
HDU-1698-Just a Hook(线段树区间更新+区间求和)
In the game of DotA, Pudge’s meat hook is actually the most horrible thing for most of the heroes. The hook is made up of several consecutive metallic sticks which are of the same length. Now Pudge wa...原创 2018-05-20 18:27:19 · 210 阅读 · 0 评论 -
NSWOJ2 - #2003. MJZ 坐火车(线段树)
题目链接:http://47.100.29.252:5283/problem/2003 思路:我们只需要设法维护:对于当前下标,每种颜色在左右两侧的出现次数的乘积,再对每种颜色的乘积求和即为答案。 开两个桶维护左侧和右侧每种颜色 的车厢数,关键在怎么填这两个桶,我们从先将填满,然后考虑从左向右移动时对的贡献即可,然后用线段树维护乘积求和即可。 #include <ios...原创 2019-08-30 10:43:54 · 198 阅读 · 0 评论 -
HDU - 5249 - KPI(权值线段树)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5249 题意:有三种操作: in x 表示加入数 x。 out 表示 弹出最早元素。 query 表示查询当前的序列中位数 即 第 floor(m/2)+1 的数字。 思路:用队列找最早的元素,权值线段树查询即可,本题需要离散化。 #include <bits/stdc++.h&...原创 2019-08-09 16:20:40 · 293 阅读 · 0 评论 -
Codeforces Round #576 (Div. 2) - D. Welfare State(思维 or 线段树)
题目链接:http://codeforces.com/contest/1199/problem/D 题意:给你一个序列,有两个操作: 将p位置改为x。 将小于x的值改为x。 思路:先说思维,我们想一下如果只有操作2,那么是不是只有操作2中最大的x起作用,那么引入操作1,那么就是操作1之后的最大x有关系,所以我们维护操作1修改的位置,维护一个后缀mx(因为后面影响前面),如果没有操作1,那直...原创 2019-08-01 09:29:24 · 210 阅读 · 0 评论 -
第五届新疆省ACM-ICPC程序设计竞赛(重现赛)L - 最优子区间(线段树)
题目链接:https://ac.nowcoder.com/acm/contest/911/L 思路:由于要求的是区间中数字恰好出现一次的个数作为得分,所以我们预处理出每一个数字从右向左第一次出现的位置,若当前数字第一次出现则,对于每一个数字,定义表示当前区间的得分,用线段树维护,对于当前数字,要在区间加一(也就是当前数字对区间的贡献加一),如果之前出现过,则区间要减一,线...原创 2019-06-13 21:06:56 · 528 阅读 · 7 评论 -
P3373 - 线段树(区间更新/求和)
题目链接:https://www.luogu.org/problemnew/show/P3373 思路:要设置加法标记和乘法标记, 先加后乘和先乘后加是不一样的, 先加后乘 : ,先乘后加: 比较一下,发现,上面的先加后乘相当于下面的式子,在加法上面多乘了一个c,所以,我们只要是先加后乘的式子,只要加一个*c就可以转化为先乘后加的式子,具体的操作就是在添加乘法标记的时候,把加法标记*c就好了...原创 2019-06-07 18:30:12 · 206 阅读 · 0 评论 -
Codeforces Beta Round #6 (Div. 2 Only)E. Exposition(线段树or multiset)
题目链接:http://codeforces.com/contest/6/problem/E 题意:给你n个数,让你找到最长的区间,使得这个区间里面的最大值减去最小值不超过K,然后让你输出符合条件的最长区间大小和最长区间的个数,以及每一个区间的起始下标和结束下标(下标从1开始)。 思路1:使用stl库的multiset维护区间的左端点,如果一个区间不符合,那么就删除左端点(因为我们是从左往右遍...原创 2018-12-13 18:32:51 · 216 阅读 · 0 评论 -
POJ-2528-Mayor's posters(线段树区间更新+离散化+正确解法)
The citizens of Bytetown, AB, could not stand that the candidates in the mayoral election campaign have been placing their electoral posters at all places at their whim. The city council has finally d...原创 2018-05-29 20:53:17 · 744 阅读 · 1 评论 -
HDU-1394-Minimum Inversion Number (单点更新+区间求和)
The inversion number of a given number sequence a1, a2, ..., an is the number of pairs (ai, aj) that satisfy i < j and ai > aj. For a given sequence of numbers a1, a2, ..., an, if we move the fi...原创 2018-05-24 20:09:34 · 182 阅读 · 0 评论 -
POJ-2828-Buy Tickets (线段树单点更新)
Railway tickets were difficult to buy around the Lunar New Year in China, so we must get up early and join a long queue…The Lunar New Year was approaching, but unluckily the Little Cat still had sched...原创 2018-05-28 21:46:51 · 210 阅读 · 0 评论 -
HDU-1542-Atlantis (线段树 + 扫描线 + 离散化)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1542 There are several ancient Greek texts that contain descriptions of the fabled island Atlantis. Some of these texts even include maps of parts of th...原创 2018-06-04 17:37:46 · 899 阅读 · 2 评论 -
POJ-3667-hotel(线段树区间合并+详解)
The cows are journeying north to Thunder Bay in Canada to gain cultural enrichment and enjoy a vacation on the sunny shores of Lake Superior. Bessie, ever the competent travel agent, has named the ...原创 2018-06-03 11:55:20 · 525 阅读 · 0 评论 -
POJ-3468-A Simple Problem with Integers (线段树区间更新+区间求和)
You have N integers, A1, A2, ... , AN. You need to deal with two kinds of operations. One type of operation is to add some given number to each number in a given interval. The other is to ask for the ...原创 2018-05-21 15:56:43 · 225 阅读 · 0 评论 -
HDU-1166-敌兵布阵 (线段树单点更新+区间求和)
C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了。A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况。由于采取了某种先进的监测手段,所以每个工兵营地的人数C国都掌握的一清二楚,每个工兵营地的人数都有可能发生变动,可能增加或减少若干人手,但这些都逃不过C国的监视。 中央情报局要研究敌人究竟演习什么战术,所以...原创 2018-05-21 15:42:35 · 190 阅读 · 0 评论 -
The Preliminary Contest for ICPC Asia Xuzhou 2019 - E - XKC's basketball team(二维偏序)
题目链接:https://nanti.jisuanke.com/t/41387 题意:给出一个长度为n的数列,给出m的值。对于每一个 arr[i] 问在数列中从 i 位置向右比 arr[i] + m 大的值的位置与 i 之间最多有多少个数。 思路:用线段树来记录区间最大值,优先从右子树开始查询是否存在大于 arr[i] + m的值,找到返回下标即该值在原数列中的位置,找不到返回-1。 #i...原创 2019-09-28 17:02:13 · 164 阅读 · 0 评论