实用数据结构
文章平均质量分 85
Lannister_Stark
这个作者很懒,什么都没留下…
展开
-
POJ2777 Count Color 【简单的线段树】
【题目大意】现在有一个长度为L cm的板,每一厘米划分成一个格子,一开始每个格子颜色涂为1(1号颜色),之后有O个操作,一共有两种操作:1、C a b c 代表将区间[a,b]全部刷成c颜色(一共有T种颜色,会读入)2、P a b 代表询问区间[a,b]有多少种不同的颜色数据范围:1注意可能读入的a,b出现a>b的情况,需要交换一下;【解题思路】(虽然我A了但是貌似时间和空原创 2017-03-30 16:37:22 · 374 阅读 · 0 评论 -
UESTC 841 休生伤杜景死惊开 【线段树】
【题目大意】给出一个数组A,求出满足iAk的数对(i,j,k)的个数【解题思路】第一反应是三元逆序对或者类似的东西,但发现做不出来,于是换思路。想了一会发现可以直接维护两颗线段树,但是压入的是数值不是下标,一颗处理一下区间和最后倒回来枚举j求出一个left值和right值(即j对答案的贡献),乘起来累加进答案即可【代码】#include#include#includ原创 2017-03-31 12:25:56 · 1370 阅读 · 0 评论 -
HDU 4006 The kth great number【线段树二分】
【题目大意】输入两个正数n,k,代表n次操作和查询第k大数,有两种操作:1、I A 代表将A加入序列2、Q 代表询问第k大数多组数据,1【解题思路】本题采用线段树无疑,但是需要注意的是询问操作。首先将操作离线,然后将所有I操作对应的A离散化。然后将A压入线段树,在对应节点处prefix++(prefix就是答案)然后每遇到一次询问,都在线段树上二分,具体过程见下原创 2017-04-01 08:34:57 · 578 阅读 · 1 评论 -
UESTC 844 程序设计竞赛 【维护值稍多的线段树】
【题目大意】维护一个序列,使之支持一下两种操作:1、单点修改2、查询一个区间子区间最大值(在某个区间中任意寻找一段连续子区间,使得该子区间的和最大)(以下将该值称为‘答案’)【解题思路】线段树做法:考虑维护四种和:sum,suml,sumr,subsum,分别是区间和,左端点开始连续最大和(以下将该值称为‘左始和’),右端点结束连续最大和(以下将该值称为‘右结和’),答案原创 2017-04-01 17:36:15 · 526 阅读 · 0 评论 -
HDU 1166 敌兵布阵 【简单的树状数组||线段树】
【解题思路】直接树状数组过【代码】#include#include#include#include#include#include#include#include#include#include#define LL long long//#define LOCAL#define lowbit(i) (i&(-i))using namespace std;c原创 2017-04-01 18:16:49 · 367 阅读 · 0 评论 -
UESTC395 Dynamic Query System 【简单平衡树(数组Treap)】
【题目大意】题目包含多组数据每组数据读入一个正整数n表示操作数量,接下来n行,每行一个操作操作分为八种:1)I X 表示将X插入序列2)R X 表示将X从序列中删除,注意,由于X可能被插入了多次,所以只要随便删除一个即可3)S 表示询问该序列的元素个数(重复的也算)4)L X 表示询问序列中严格比X小的数有多少个5)W K 表示询问第K大的数是什么(从1开始标号),原创 2017-04-21 20:50:35 · 398 阅读 · 0 评论