
数据结构-线段树
sega_handsome
这个作者很懒,什么都没留下…
展开
-
组队赛第一场线段树
比赛的线段树,自己原本用朴素的方式对每一个点除以2,结果超时了#include#include#include#include#include#include#include#include#include#include#include#include#define ll long long#define inf 0x3f3f3f3f#define bug1 cout原创 2017-03-25 17:20:01 · 238 阅读 · 0 评论 -
Ice-cream Tycoon SGU - 311 splay
splay参考:http://blog.youkuaiyun.com/acm_fighting/article/details/52331833Splay中有一些常用的操作和一些很容易犯的bug先来记录一下容易写错的地方 新建结点(或者连续一段,特指在key_value的位置插入和删除)或者删除结点(或者连续一段)的时候需要pushup(ch[root][1]),pushup(root) 申请一个转载 2017-10-28 10:23:07 · 235 阅读 · 0 评论 -
[bzoj4552][Tjoi2016&Heoi2016]排序-二分+线段树
线段树而已; 参考:http://blog.youkuaiyun.com/werkeytom_ftd/article/details/51366237 和http://www.cnblogs.com/gengchen/p/6613566.html#include <cstdio>#define init int l = t[k].l, r = t[k].r, mid = (l + r) >> 1cons转载 2017-10-27 15:34:11 · 168 阅读 · 0 评论 -
Codeforces Round #406 (Div. 1) B. Legacy 线段树建图跑最短路
参考:https://vjudge.net/solution/8563240 博客:http://www.cnblogs.com/qscqesze/p/6651447.html题意三种操作:1 a b c,在建立权值为c的a->b的单向边2 a b c d,建立a->[b,c]权值为d的单向边3 a b c d,建立[b,c]->a权值为d的单向边。给你一个起点,问你起点到其他原创 2017-10-27 17:43:08 · 263 阅读 · 0 评论 -
The Monochrome Picture SGU - 458 线段树优化dp
参考:https://vjudge.net/solution/2633272题意: 给定一个序列,删除最少的数使得任意两个相邻的数的abs不会相差1,看来自己还是不太熟悉线段树,原本居然不知道怎么处理这个地方的用线段树的优化..#include<bits/stdc++.h>using namespace std;#define up 1000000#define N 100050#defin原创 2017-10-24 11:29:35 · 297 阅读 · 0 评论 -
Codeforces 842 D Vitya and Strange Lesson 线段树 (未理解透)
参考http://blog.youkuaiyun.com/lxy767087094/article/details/77719670题意:给出一个长度为n的序列和m次操作,每次操作将序列中所有数异或上给定的数x,然后求序列的mex。mex:给定序列中未出现的最小的非负数。思路:首先不要被题目中说的每次序列都会变化迷惑,因为异或满足结合律,因此我们只要把所有的x异或起来,就相当于对原序列和一个x求题原创 2017-11-01 19:45:13 · 331 阅读 · 0 评论 -
hdu 5091 Beam Cannon(线段树) 矩形覆盖最多点
参考:http://blog.youkuaiyun.com/u013654696/article/details/40712519 给出n个点和一个矩形的长和宽, 问这个矩形最多能覆盖多少个点。矩形放的最优方案一定存在一种是左边界或者右边界上有点,假设是左边界上有点, 就可以枚举左边界上的是哪个点, 也就是从左向右扫, 假设扫到了第i个点, 那么在第i个点右边并且x坐标距离小于w的点j, 如果矩形的上边界在a转载 2017-11-03 09:25:43 · 920 阅读 · 0 评论 -
hdu 5172 GTY's gay friends 线段树 (未敲)
参考(转自。):http://blog.youkuaiyun.com/u013654696/article/details/43636759 题意:有n个元素的序列,和m个询问, 每次询问[l,r]的区间是不是1~r-l+1的一个排列。思路:对于一个长度为len的区间, 如果最大值为len,最小值为1,并且区间元素没有重复的话就说明它是一个1~len的排列, 最值可以用线段树来求, 对于区间重复的话可以先预处转载 2017-11-03 09:32:44 · 223 阅读 · 0 评论 -
CDOJ 1292 卿学姐种花 暴力 分块 线段树
转自:卿学姐种花 题目连接:http://acm.uestc.edu.cn/#/problem/show/1292 Description众所周知,在喵哈哈村,有一个温柔善良的卿学姐。卿学姐喜欢和她一样美丽的花。所以卿学姐家的后院有很多的花坛。卿学姐有n 个花坛,一开始第i个花坛里有A[i]朵花。每过一段时间,卿学姐都会在花坛里种上新的花。作为一个聪明的学姐,卿学姐的种花方式也是与众不同 ,转载 2017-12-01 20:41:45 · 367 阅读 · 0 评论 -
Codeforces Round #397 F. Souvenir线段树套set
博客:http://www.cnblogs.com/qscqesze/p/6405272.html这算是一个时间换空间的做法。 对于每一个树上的点弄一个set。然后离线从右到左, 每次更新的时候如果 if((p==t.end()||(p-val)>=mi)&&(p==t.begin()||(val-(–p))>=mi)) 这样就不用单个点地查询了。。转载 2017-10-28 11:33:38 · 292 阅读 · 0 评论 -
Codeforces Round #381 (Div. 2) E. Alyona and towers 差分+ 线段树并
题意:给你一个数列,m个操作每次修改一段区间,问每次修改后数列的最长山峰(al < al + 1 < al + 2 < ... < ak > ak + 1 > ak + 2 > ... > ar.)、参考http://blog.youkuaiyun.com/dormousenone/article/details/53363374分析针对区间修改及维护的问题,很容易想到线段树。可以想到al<al+1<al+2<转载 2017-09-30 20:26:35 · 275 阅读 · 0 评论 -
M - Sequence operation HDU - 3397 线段树,成段更新,区间合并)
https://vjudge.net/contest/177550#problem/M参考别人的代码,模仿下。。#include#include #include #include using namespace std;#define sf scanf#define pf printf#define mem(a,b) memset(a,b,sizeof(a));#转载 2017-09-26 15:55:17 · 224 阅读 · 0 评论 -
just a hook hdu1698+zoj1610
简单线段树,自己还是做了挺久的,,,改了一个地方过了,,也不太清楚为甚么#include#include#include#include#include#include#include#include#include#include#include#include#define ll long long#define inf 0x3f3f3f3f#def转载 2017-03-31 21:25:14 · 318 阅读 · 0 评论 -
选拔赛之 线段树
id=98这道题自己陷入了一个坑,,用了快速乘, 就会超时,,快速乘只是用来防止中间结果溢出的,反而会比乘法慢顺便复习下快速乘代码,,这个地方还有一个坑就是数论里面的东西。。现在还不知道为什么。。有个小坑就是ak≡ak mod (p−1)(mod p)a ^ k \equiv a ^ {k\ mod \ (p - 1)} (mod\ p)ak≡ak mod (p−1转载 2017-04-11 09:37:58 · 192 阅读 · 0 评论 -
Codeforces Round #426 (Div. 2) D. The Bakery(DP+线段树) 好题
http://codepad.org/MXUIg5lP转载 2017-08-18 16:05:18 · 237 阅读 · 0 评论 -
Codeforces 811E Vladik and Entertaining Flags [线段树][并查集]
题意:给了一个n*m的矩阵,上下左右相同数的点可以并为同一个联通块,对于每个询问L,R 输出(1,L) … (n,R)的块中有几个联通块。1#define MAXN 100010#define lson i<<1#define rson i<<1|1int n,m,q;struct Node{ int ls[11],rs[11],sum;}tree[N<<2];int fa[N*转载 2017-08-25 09:09:25 · 244 阅读 · 0 评论 -
- Buy Tickets POJ - 2828 线段树
**题目意思:有n个数,进行n次操作,每次操作有两个数pos, ans。pos的意思是把ans放到第pos 位置的后面,pos后面的数就往后推一位。最后输出每个位置的ans。 **这个线段树还是挺好的题目。。 也想到了反过来,但是觉得一个一个去找就不可以了,, 所以这个地方就用到了线段树。。int n;int p[N],val[N];int ans[N],sum[N<<2],tl[N<<2原创 2017-08-24 14:30:33 · 267 阅读 · 0 评论 -
计蒜客 The Heaviest Non-decreasing Subsequence Problem dp LIS变形 || 线段树+dp
题意:每个数有一个val和weight,如果val < 0 weight 为 0 , val >= 1e4 weight 为5 ,其余为1.让你求一哥序列使得为weight最大并且val是不下降的.心得:悲惨背锅。。。不知道怎么该LIS的nlogn做法。。 结果看了挺久。。 最后队友想的方法大概是 其实这个题仔细想一下就是把价值为0的去掉,然后把价值为5的分成5个1的放进去,然后求一次LIS,转载 2017-09-25 14:33:43 · 209 阅读 · 0 评论 -
hdu 3308(线段树区间合并)
线段树的区间并,这道题是比较简单的一个,,重点是细节的处理#include<bits/stdc++.h>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define sf scanf#define pf printf#define mem(a,b) memset(a,b,sizeo原创 2017-09-25 22:18:28 · 202 阅读 · 0 评论