
====数据结构====
yxg_123
这个作者很懒,什么都没留下…
展开
-
ural 1019. Line Painting 线段树 离散化
题目链接:http://acm.timus.ru/problem.aspx?space=1&num=1019题意:初始0~1e9都染成白色,[l,r]染成w/b, 是开区间。 样例: 4 1 999999997 b 40 300 w 300 634 w 43 47 b 输出 47 634 题解:类比上一篇博客,不同的是开区间 还是那组样例 2 0 3 b 4 9999999原创 2017-03-25 23:54:24 · 331 阅读 · 0 评论 -
Codeforces VK Cup 2015 - Qualification Round 1 D. Closest Equals 离线线段树 求区间相同数的最小距离
题目链接:http://codeforces.com/contest/522/problem/D题意:查询区间相同数的最小距离题解:用一个map记录前面的位置,然后离线搞一搞 单点更新,区间查询最小值代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;#define MS(a) memset(a,0,size原创 2017-03-11 21:39:35 · 398 阅读 · 0 评论 -
Wannafly2016-12-27 SPOJ-MINSUB - Largest Submatrix 二分+单调栈
题目链接:http://www.spoj.com/problems/MINSUB/题意:给定一个由非负数组成的矩阵M,和一个整数K,对于矩阵M的子矩阵M’,定义min(M’)为M’矩阵中元素的最小值。 我们需要找出这样一个子矩阵,该矩阵的面积至少为K,且min(M’)最大化。面积的定义为该矩阵的行数*列数。求出min(M’),并给出使得min(M’)为该值时面积的最大值。题解:这类问题都是可以二分原创 2017-03-18 17:27:34 · 302 阅读 · 0 评论 -
51nod 1158 全是1的最大子矩阵 单调栈
题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1158题意:给出个的矩阵,里面的元素只有0或1,找出M1的一个子矩阵,M1中的元素只有1,并且的面积是最大的。输出的面积题解:单调栈,把每一列数看成一个数组。 代码:#include <bits/stdc++.h>using namespace std;t原创 2017-03-18 16:02:36 · 487 阅读 · 0 评论 -
poj2796 单调栈
题目链接:http://poj.org/problem?id=2796题意:给你一个序列,让你求出一段区间,(在这段区间之内的最小值*这段区间所有元素之和)的最大值……题解:http://www.cnblogs.com/ziyi–caolu/archive/2013/06/23/3151556.html代码:#include <iostream>#include <cstdio>#include原创 2017-03-18 13:46:19 · 368 阅读 · 0 评论 -
[POJ2823]Sliding Window(单调队列)
题目链接:http://poj.org/problem?id=2823题意:给你一个序列a,要找到两个序列 a的下标为i,i+1,i+2, ….. i+k-1 当中的最小值为b[i]; c[i]就是最大值题解:单调队列,紫书中第八章的滑动窗口。。优先队列也可做代码:#include <iostream>#include <cstdio>#include <cstring>using nam原创 2017-03-08 18:16:15 · 203 阅读 · 0 评论 -
bzoj 1015: [JSOI2008]星球大战starwar 并查集
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1015题意:题解:逆向思维+并查集。处理连通这让我们想到并查集,题目中的输入是一次破坏哪一个结点,我们可以逆着想,在剩余结点的基础上反向逐个加入被删除的结点,使每个结点与其相邻的并且处在目前未删除点集中的结点合并、tot维护联通块的数目、ans存储每次的tot。代码:#include <bit原创 2017-03-03 16:24:07 · 272 阅读 · 0 评论 -
hdu 4496 D-City 并查集
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4496题意:给你个图,他不断删边,然后问你联通块的个数题解:我们可以逆向认为所有的点全是独立的,因为正向的时候去掉其中某条边的,独立的点不一定会增多(去掉这条边后还有其他边间接的相连),所以当我们逆向思考的时候,只会在增加某一条边时减少独立的点(也就是联通的点增多),这样只会在他之后才会有可能有某条边的操原创 2017-03-03 15:08:06 · 243 阅读 · 0 评论 -
hdu 1257 小希的迷宫 并查集
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1272题意:题解:用并查集来判断是否都在一个集合里面,是否成环,就好了代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;#define MS(a) memset(a,0,sizeof(a))#define MP原创 2017-03-03 14:44:17 · 221 阅读 · 0 评论 -
zoj 1610 Count the Colors 线段树 区间更新
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=610题意:题解:线段树区间更新 注意更新子节点,如果遇到的父节点已经被颜色覆盖掉的话,父节点 的颜色需要往下传递(因为父节点已经不会是原来那种颜色了)。代码:#include <bits/stdc++.h>using namespace std;typedef lo原创 2017-03-24 19:02:57 · 273 阅读 · 0 评论 -
挑战练习题3.3 POJ 2886 Who Gets the Most Candies? 树状数组
题目链接:http://poj.org/problem?id=2886题意:抢糖:N个熊孩子围成一个圈,从第K个开始淘汰,每淘汰一个,出示手中的数字,决定下一个淘汰者,正数表示左手第n个,负数反之。每个人可以拿到的存活回数的因数个数的糖果,求拿到最多糖果数的孩子的名字以及糖果数。题解:http://www.hankcs.com/program/algorithm/poj-2886-who-gets-原创 2017-03-24 19:32:53 · 250 阅读 · 0 评论 -
hdu4288 Coder 离线线段树 单点更新 区间求和 离散化?
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4288题意:维护一个有序数列{An},有三种操作: 1、添加一个元素。 2、删除一个元素。 3、求数列中下标%5 = 3的值的和。题解:http://blog.youkuaiyun.com/dgq8211/article/details/7999179 由于线段树中不支持添加、删除操作,所以题解写的是用离线做原创 2017-03-24 19:16:56 · 314 阅读 · 0 评论 -
zoj 2301 || hdu 1199 Color the Ball 线段树 离散化
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1301题意:[l,r],染成w/b, 初始全为b,问最长段的w题解:因为N小于2000,染色范围可以到2^31,所以要离散化http://blog.youkuaiyun.com/zxy_snow/article/details/6639878 其实这题的意思是 染色区间【闭区间】原创 2017-03-25 23:29:19 · 680 阅读 · 0 评论 -
poj 1195 Mobile phones 二维树状数组
题目链接:http://poj.org/problem?id=1195题意:S*S的矩阵,两种操作 1 x y a, 在点(x,y)上加a 2 lx ly rx ry, 求矩形lx题解:二维树状数组。代码:#include <iostream>#include <cstdio>#include <cstring>using namespace std;typedef long long原创 2017-03-24 21:18:28 · 289 阅读 · 0 评论 -
poj 2155 Matrix 二维树状数组
题目链接:http://poj.org/problem?id=2155题意:给出N*N的矩阵,初始为0。 给出矩阵左上角和右下角坐标,这个面积范围里的元素 1变0 ,0 变1,然后给出询问,问某个点是多少。题解:http://blog.youkuaiyun.com/zxy_snow/article/details/6264135 我们将1变0,0变1转变为将这一块面积翻转几次,奇数次就是1,偶数次就是0。原创 2017-03-24 21:11:55 · 266 阅读 · 0 评论 -
poj 2299 Ultra-QuickSort 树状数组求逆序数 离散化
题目链接:http://poj.org/problem?id=2299题意:求逆序数题解:树状数组可以求逆序数 但是数据50w,所以要离散化。 归并也可做:http://blog.youkuaiyun.com/zxy_snow/article/details/6257561 这位大牛不知道什么叫离散化 写出了离散化 Orz “就排下序,重新编数,这个据说叫离散化 = =”另外一种离散化方式吧 ( 其实就是原创 2017-03-24 20:50:17 · 378 阅读 · 0 评论 -
poj3067 Japan 树状数组 逆序数
题目链接:http://poj.org/problem?id=3067题意:日本有N个城市在东边,从北至南编号为1 2 3,,,N,M个城市在西边,从北至南编号为1 2 ,,,,M,K条高速公路将被建造高速公路的一端在西边,一端在东边输入有多组样例,每组样例第一行为n m k接下来有k行,分别为高速公路的端点求高速公路的交点有多少个,不包括以城市为相交点题解:对Ax,Ay和Bx,By两条高速公路,有原创 2017-03-24 20:56:46 · 320 阅读 · 0 评论 -
poj 2352 Stars 树状数组
题目链接:http://poj.org/problem?id=2352题意:给你一系列点(按y递增,x递增排列),level[X] 指的是 在当前点的左下方 包括自己 的点数为X 的这些点的个数。题解:树状数组 y递增,不管y,只要维护x就行了 读入一个点,找到比他小的点的个数,也就是他的等级,然后将这个等级的点的个数加一即可代码:#include <iostream>#include <cs原创 2017-03-24 20:28:05 · 249 阅读 · 0 评论 -
poj 2029 Get Many Persimmon Trees 二维树状数组
题目链接:http://poj.org/problem?id=2029题意:N个星,在W*H的网格中,下面给出N个星的位置,给出S,T,要找出S*T大小的矩形,使得星星最多题解:http://blog.youkuaiyun.com/zxy_snow/article/details/6260895 二维树状数组和一维差不多,维护的是两个方向x,y。一块面积?代码:#include <iostream>#inc原创 2017-03-24 19:59:30 · 320 阅读 · 0 评论 -
CodeforcesBeta Round #19 D. Points 离线线段树 单点更新 离散化
题目链接:http://codeforces.com/contest/19/problem/D题意:有三种操作“add x y”往平面上添加(x,y)这个点,”remove x y”,将平面上已经存在的点(x,y)删除,“find x y”找出平面上坐标严格大于(x,y)的点,如果有多个点找x最小的,再找y最小的。题解:所有点 x 坐标离散化,然后按照新的坐标建一个线段树。 对于每一个坐标x,维护原创 2017-03-24 19:39:49 · 238 阅读 · 0 评论 -
HDU 3974 Assign the task 图论/线段树区间更新,单点查询
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3974题意:给你一个树,v,u 表示u是v的上司 有两个操作 1.让某一个点,和他的儿子们全部染成X 2.查询某一个点是什么颜色题解:当成图论跑一发,对于每一个查询直接跑到根位置就好,更新的时候,注意更新的时间问题线段树也可以做: 将树映射到区间的线段树。。。 主要是将原有的关系树根据BOSS关原创 2017-03-03 13:22:04 · 251 阅读 · 0 评论 -
cdoj 1070 秋实大哥打游戏 带权并查集
题目链接:http://acm.uestc.edu.cn/#/problem/show/1070题意:题解:带权并查集 每次往上更新的时候,顺便把边权更新了就好 记住得路径压缩代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;#define MS(a) memset(a,0,sizeof(a))#def原创 2017-03-03 12:14:29 · 261 阅读 · 0 评论 -
poj 2528 Mayor's posters 线段树区间更新 + 离散化
题目链接:http://poj.org/problem?id=2528题意:一个区间贴海报,然后问你在最后,能看见多少个海报题解:用每个离散化之后的编号, 区分不同海报, 每次更新都是覆盖前一个值的,最后统计一下有多少不同的v就好了稍微了解了离散化的姿势: http://www.cnblogs.com/gongxijun/p/4020322.html通俗点说,离散化就是压缩区间,使原有的长区间映射原创 2017-03-01 23:56:22 · 267 阅读 · 0 评论 -
cdoj1057 秋实大哥与花 线段树 区间加,区间查询和
题目链接:http://acm.uestc.edu.cn/#/problem/show/1057题意:题解:代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;#define MS(a) memset(a,0,sizeof(a))#define MP make_pair#define PB push_bac原创 2017-03-01 22:24:14 · 283 阅读 · 0 评论 -
hdu 2795 Billboard(线段树)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2795题意:一个h*w的公告牌,要在其上贴公告。 输入的是1*wi的w值,这些是公告的尺寸 接下来要满足的条件: 尽量往上,同一高度尽量靠左。 求第n个广告所在的行数 ,没有合适的位置贴了则输出-1。题解:利用线段树可以得出区间的最大值,维护一个最大值val,用来表示这段区间内有最多空位的那一行的空原创 2017-03-01 19:11:19 · 234 阅读 · 0 评论 -
HDU 1394 Minimum Inversion Number 线段树 单点更新 求逆序数
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1394题意:a1, a2, …, an-1, an a2, a3, …, an, a1 a3, a4, …, an, a1, a2 … an, a1, a2, …, an-1 求其中最小的逆序数的个数题解:从a[0]开始扫描,找比a[0]大的个数,也就是询问区间(a[0],n-1)中点的原创 2017-03-01 16:45:54 · 238 阅读 · 0 评论 -
hdu1698 Just a Hook 线段树 区间更新 懒操作
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1698题意:输入一个n表示一段长度为n的区间,有n个编号为1~n的点,初始值全部为1。 有q个操作, 每个操作有3个数:l,r,v表示将区间l~r的所有元素修改为v。 求经过q次修改后的整个区间的值之和。题解:线段树。 区间更新 lazy。 需要用的时候再pushdown 一个点一个点的更新之所以慢原创 2017-03-01 21:40:08 · 271 阅读 · 0 评论 -
poj3468 A Simple Problem with Integers 线段树 区间更新 lazy
题目链接:http://poj.org/problem?id=3468题意:题解:区间更新 lazy操作,会爆int , 另外用scanf代码:#include <cstdio>#include <iostream>#include <cstring>using namespace std;typedef long long ll;#define MS(a) memset(a,0,size原创 2017-03-01 22:18:49 · 240 阅读 · 0 评论 -
HDU 1166 敌兵布阵 线段树
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1166题意:题解:代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;#define MS(a) memset(a,0,sizeof(a))#define MP make_pair#define PB push_原创 2017-03-01 16:33:17 · 225 阅读 · 0 评论 -
BZOJ 1012: [JSOI2008]最大数maxnumber 单调队列/线段树
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1012题意:题解:不用printf输出就RE…代码:代码一: 单调队列#include <bits/stdc++.h>using namespace std;typedef long long ll;#define MS(a) memset(a,0,sizeof(a))#define原创 2017-03-02 12:31:15 · 314 阅读 · 0 评论 -
tyvj:1038 忠诚 线段树 区间查询
题目链接:http://www.tyvj.cn/p/1038#题意:题解:区间查询最小值代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;#define MS(a) memset(a,0,sizeof(a))#define MP make_pair#define PB push_backconst in原创 2017-03-02 14:33:09 · 283 阅读 · 0 评论 -
vijos 1659 河蟹王国 线段树区间加、区间查询最大值
题目链接:https://vijos.org/p/1659题意:题解:线段树,区间更新(加/减),区间查询最大值代码:#include <cstdio>#include <iostream>#include <cstring>using namespace std;typedef long long ll;#define MS(a) memset(a,0,sizeof(a))#defin原创 2017-03-02 14:34:40 · 374 阅读 · 0 评论 -
codevs 1073 家族 并查集
题目链接:http://www.codevs.cn/problem/1073/题意:题解:代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;#define MS(a) memset(a,0,sizeof(a))#define MP make_pair#define PB push_backconst i原创 2017-03-03 01:16:47 · 318 阅读 · 0 评论 -
喵哈哈村的魔法考试 Round #2 (Div.2) B.喵哈哈村的种花魔法 线段树 区间更新 单点查询
喵哈哈村的种花魔法发布时间: 2017年2月26日 16:13 最后更新: 2017年2月26日 16:14 时间限制: 1000ms 内存限制: 128M题目链接:http://qscoj.cn/problem/16/描述喵哈哈村有一个谷歌廖,谷歌廖特别喜欢种花。而且谷歌廖最神奇的就是,他会施展一种种花魔法,会使得一定区间的花儿,长高厘米。在谷歌廖施展若干次魔法之后,好奇的沈宝宝想知道原创 2017-03-03 00:46:06 · 366 阅读 · 0 评论 -
poj 2828 buy Tickets 用线段树模拟带插入的队列 单点更新
题目链接:http://poj.org/problem?id=2828题意:给出n个人,每人有一个应该在队列的位置和值,如果后面的人的位置和前面重复了,就插在前面。输出最后的队列题解:从后往前找位置,因为后面的人的位置总是不变的 线段树,单点更新, 维护的v表示 这段区间一共有多少个空位置 更新到叶子节点的时候:v=0,return L; 因为这个位置已经固定了,相当于在后面的人预留一个位置,相原创 2017-03-02 23:14:52 · 246 阅读 · 0 评论 -
Poj 3667 - Hotel 线段树-- 区间更新 区间合并 区间查询
题目链接:http://poj.org/problem?id=3667题意:题解:http://www.cnblogs.com/scau20110726/archive/2013/05/07/3065418.html 写的挺好 http://www.cnblogs.com/yewei/archive/2012/05/05/2484471.html 参考代码代码:#include <stdio.h原创 2017-03-02 21:42:04 · 218 阅读 · 0 评论 -
cdoj 1061 秋实大哥与战争 线段树,合并区间,单点更新,单点查询区间长度
题目链接:http://acm.uestc.edu.cn/#/problem/show/1061题意:题解:线段树记录从左边延展的长度,记录从右边延展的长度,和区间最大长度 每次更新的时候,就向上更新代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;#define MS(a) memset(a,0,size原创 2017-03-02 18:51:12 · 227 阅读 · 0 评论 -
hdu 1540 Tunnel Warfare 线段树 单点更新,查询区间长度,区间合并
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1540题意:给你一个区间,有三个操作,使的一个村庄毁灭,使的上一个毁灭的村庄复活,查询这个村庄所在最长区间题解:区间合并的线段树,单点修改,记录从左边的最大值,右边的最大值,区间的最大值 然后每次更新代码:#include <bits/stdc++.h>using namespace std;typ原创 2017-03-02 18:09:59 · 230 阅读 · 0 评论 -
bzoj 1798: [Ahoi2009]Seq 维护序列seq 线段树 区间乘法区间加法 区间求和
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1798题意:题解:线段树,区间乘法+区间加法,都扔给一个updata就好代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;#define MS(a) memset(a,0,sizeof(a))#def原创 2017-03-02 16:43:53 · 678 阅读 · 0 评论 -
codevs 1191 树轴染色 线段树区间定值,求和
题目链接:http://codevs.cn/problem/1191/题意:题解:sum表示这段区间白点的个数,初始全部为0。 lazy为1表示到达这个区间需要被更新为白点,到需要更新的时候再pushdown代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;#define MS(a) memset(a,0,原创 2017-03-02 15:11:42 · 290 阅读 · 0 评论