线段树
Dave_L
这个作者很懒,什么都没留下…
展开
-
牛客-网易19校招真题题解 中途相遇法,线段树+二分,贪心,模拟,计算几何,分解质因数
牛牛找工作题目描述为了找到自己满意的工作,牛牛收集了每种工作的难度和报酬。牛牛选工作的标准是在难度不超过自身能力值的情况下,牛牛选择报酬最高的工作。在牛牛选定了自己的工作后,牛牛的小伙伴们来找牛牛帮忙选工作,牛牛依然使用自己的标准来帮助小伙伴们。牛牛的小伙伴太多了,于是他只好把这个任务交给了你。输入描述:每个输入包含一个测试用例。每个测试用例的第一行包含两个正整数,分别表示工作的数量N...原创 2020-02-07 18:36:40 · 1704 阅读 · 0 评论 -
可持久化(主席)树(静态)入门 POj 2104 K-th Number
所谓主席树呢,就是对原来的数列[1..n]的每一个前缀[1..i](1≤i≤n)建立一棵线段树,线段树的每一个节点存某个前缀[1..i]中属于区间[L..R]的数一共有多少个(比如根节点是[1..n],一共i个数,sum[root] = i;根节点的左儿子是[1..(L+R)/2],若不大于(L+R)/2的数有x个,那么sum[root.left] = x)。若要查找[i..j]中第k大数时...原创 2018-07-27 17:41:14 · 227 阅读 · 0 评论 -
练习赛13 A滑动窗口 B dp+树状数组维护前缀和 C博弈 G dfs序+线段树 H思维 Ifloyd J模拟
B题意:给一个数组,求有多少个严格上升的子序列 思路: dp[i]表示以i结尾的上升子序列个数,dp[i] = Σdp[j] + 1 a[i] > a[j] . 先离散化下,然后用树状数组维护前面比他小的 结果的和 , 每次加1然后更新dp[i],最后询问最大的数(离散化后最大为n)的结果。 Code:#include <bits/stdc++.h&原创 2018-07-31 17:53:02 · 314 阅读 · 0 评论 -
8 - 7 训练赛- ACM-ICPC 2015 Changchun Preliminary Contest A优先队列G线段树区间最值H排序二叉树J大组合数取模卢卡斯+CRT
A 题意:邀请k个人来,m次开门操作,每次操作有x,y表示x个人来之后开门,这次开门能进来y个人。礼物最贵的先进,如果一样先来的先进。如果m次开门操作后还有没进来的,就都进来。给q个询问,第x个进来的人是谁。 思路:优先队列维护下。 Code:#include <bits/stdc++.h>#pragma comment(linker, “/STACK:1024000000...原创 2018-08-07 21:32:01 · 312 阅读 · 0 评论 -
线段树练习-懒惰标记的应用
题目链接 题意:2个操作: 1:l,r,x,数组1区间l-r全部由y(初始为对应位置 i )变为x,此时数组2每个位置加上|x-y|。 2: l , r 询问数组2 的 l - r 的和。 思路:可以把数组1和2放到一个线段树维护更新,col为数组1,sum为数组2,对于数组1,两个儿子颜色相同才能有颜色。对于数组2,就是求和。 懒惰标记记录每次更新后节点颜色与更新颜色的差值。 需要...原创 2018-08-23 14:15:35 · 507 阅读 · 0 评论 -
HDU4578 线段树操作 加法+乘法+替换+求C次方和
HDU4578思路:一个区间出现+和时,(p +lazy) mul = p * mul + lazy * mul,即 让原先的和 sum* mul , 然后加法的lazy标记mul查询的时候:( p + v ) ^ 3 = p3+3*p2v+3v2*p+v3t[rt].sum3 = (t[rt].sum3 + t[rt].sum2 * 3 * v + 3vvt[rt].sum1+vvv...原创 2018-10-08 21:47:00 · 287 阅读 · 0 评论 -
UVA11297 暴力 ||线段树 矩阵区域最大最小值
UVA11297题意:求矩形区域的最大最小值,有更新操作暴力能过,但是没啥意思,还可以二维线段树。//uva11297#include &lt;bits/stdc++.h&gt;#define INF 0x3f3f3f3fusing namespace std;int n ;const int AX = 5e2 + 6;int a[AX][AX] ; int main(){ ...原创 2018-11-24 11:04:39 · 314 阅读 · 0 评论 -
HDU 1542 Atlantis 线段树扫描线求矩形并面积
HDU1542思路:线段树扫描线模板。扫描线求矩形并面积大致思路:从下往上扫的话 ,需要先存下来矩形的上下边,按照y的大小排序,记录每条线段的左右端点l , r 以及高度 y , 下边对应区域就加1,上边减1,每次拿这条线段到下条线段的距离 * 区域总长度累加就是并的总面积。过程大致就是下面这样,从下往上,遇到上下边就更新,求和。本来看完题想着复习重敲下代码的,但是这题我二分找位置的时...原创 2018-11-24 21:28:40 · 244 阅读 · 0 评论 -
HDU1255 矩阵面积交线段树扫描线
HDU1255思路:线段树扫描线,跟面积并不同的一点是这个需要维护一个至少两条下边的和一个至少一条下边的长度。Code:#include <bits/stdc++.h>#define LL long long using namespace std ;const int AX = 4e3 + 66 ; struct Node{ double l , r , y ; L...原创 2018-11-25 13:07:42 · 274 阅读 · 0 评论 -
练习赛6 AB暴力 C组合数学 E莫队 G计算几何 I floyd K线段树+二分
A 题意:每个人有三个值,找出所有满足自己最大的两个值大于所有人最小的两个值的人。 思路:暴力,存所有人最小的值中最大的,和第二小值最大的,分别和每个人最大次大的比较。 Code:#include &lt;iostream&gt;#include &lt;cstdio&gt;#include &lt;algorithm&gt;#define LL long longusing n...原创 2018-07-22 17:39:29 · 331 阅读 · 4 评论 -
练习赛10
A 题意:给你一个字符串s,随机选取一段区间[0,k],将这一段区间移动到剩下的字符串的左边,不知道t是什么,但是知道t的第一个字母,还能随便看t中的任意一个字母,问最优策略下获胜的概率是多少。 思路:枚举第一个字母,以及第二个字母在的位置,出现一次的话就加上。 Code:#include &lt;bits/stdc++.h&gt;using namespace std;const ...原创 2018-07-26 19:49:44 · 221 阅读 · 0 评论 -
HDU1166(敌兵布阵)
#include //树状数组也行~#include #include #define LL long longusing namespace std;const int AX = 5e5+666;LL sum[AX<<2]; void pushUp(int rt){ sum[rt] = sum[rt<<1] + sum[rt<<1|1];}vo原创 2017-07-14 10:29:36 · 352 阅读 · 0 评论 -
hihocoder1080
#1080 : 更为复杂的买卖房屋姿势时间限制:10000ms单点时限:1000ms内存限制:256MB描述小Hi和小Ho都是游戏迷,“模拟都市”是他们非常喜欢的一个游戏,在这个游戏里面他们可以化身上帝模式,买卖房产。在这个游戏里,会不断的发生如下两种事件:一种是房屋自发的涨价或者降价,而另一种是政府有关部门针对房价的硬性调控。房价的变化原创 2017-07-22 17:26:38 · 318 阅读 · 0 评论 -
hihoCoder1079 线段树+离散化
线段树+离散化#1079 : 离散化时间限制:10000ms单点时限:1000ms内存限制:256MB描述小Hi和小Ho在回国之后,重新过起了朝7晚5的学生生活,当然了,他们还是在一直学习着各种算法~这天小Hi和小Ho所在的学校举办社团文化节,各大社团都在宣传栏上贴起了海报,但是贴来贴去,有些海报就会被其他社团的海报所遮挡原创 2017-07-22 15:53:26 · 364 阅读 · 0 评论 -
线段树-扫描线
There are nnn rectangles on the plane. The problem is to find the area of the union of these rectangles. Note that these rectangles might overlap with each other, and the overlapped areas of these r原创 2017-09-24 17:37:19 · 440 阅读 · 0 评论 -
51nod 1287 加农炮 暴力or线段树or预处理+二分
1287 加农炮题目来源: Codility 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 收藏 关注一个长度为M的正整数数组A,表示从左向右的地形高度。测试一种加农炮,炮弹平行于地面从左向右飞行,高度为H,如果某处地形的高度大于等于炮弹飞行的高度H(A[i] >= H),炮弹会被挡住并落在i - 1处,则A[i - 1] + 1。如果H <= A...原创 2018-04-10 21:01:09 · 230 阅读 · 0 评论 -
数据结构专题-线段树专题 A 单点更新 区间查询 B 区间更新 区间查询 D 线段树+二分
C - 一棵像样的线段树 Time Limit: 1000 MS Memory Limit: 128 MB Submit Status 设 xem xem 表示集合中最小的未出现的正整数, 如 xem{}=1 xem{}=1 , xem{1,3,4}=2 xem{1,3,4}=2 . 定义 b i =xem{ b i− c i , b ...原创 2018-05-15 19:49:35 · 289 阅读 · 0 评论 -
暑期集训-Benelux Algorithm Programming Contest 2014 Final 解题报告
B. Button Bashing 题目链接:https://nanti.jisuanke.com/t/28312 题意:给n个按钮,每个可以按无数次,每按一次按钮增加或者减少一些时间,问如果能得到给定的时间,则输出最少次数和0,不能的话输出最少次数+大于给定时间的最小的时间与给定时间的差。 思路: t最多只有3600,所以可以求出每个时刻按下每个按钮后达到的所有时间。然后以这些时间为节...原创 2018-07-11 17:20:00 · 267 阅读 · 0 评论 -
线段树专题 - 线段树+倍增
题意:给出三个操作,1 x y 【x,y】区间内的人都去下一个城市 2 x x的倍数的人去下一个城市 3 x查询x人在哪个城市输入给出每个城市的下一个城市以及初始每个人在哪个城市。思路: 先预处理出每个城市走2^0 , 2 ^1 ….2^n 步到哪个城市以及数据范围内的每个数的因子,然后对于2操作,累加次数,对于1操作,线段树更新加和,对于3操作,对其因子的累积加和并且加上...原创 2018-07-15 11:40:33 · 367 阅读 · 0 评论 -
HDU1754
#include //不知道怎么回事,有时候明明写的一样,就是RE,只好重写(但是真的一样。。。)。#include #include #include #include #include using namespace std;const int AX = 1000001;int s[AX*4];int max(int a,int b){ return a>b?a原创 2017-07-14 10:28:40 · 682 阅读 · 0 评论