07 2013 档案
摘要:题意:一棵苹果树有n个结点,编号从1到n,根结点永远是1。该树有n-1条树枝,每条树枝连接两个结点。已知苹果只会结在树的结点处,而且每个结点最多只能结1个苹果。初始时每个结点处都有1个苹果。树的主人接下来会进行m个操作。操作共两种。C X表示将结点x上的苹果数量改变,原本是1,则现在为0,原本是0,现在是1。Q X表示一次查询。要求输出结点X和其子树上的苹果总数。n和m最大可到100000。操作只有更新和查询两种,树状数组最合适了。首先是树状数组的相关知识。网上有很多讲解,在这里传送一个讲解的地址传送门树状数组最重要的就是要搞明白那种经典的图,之后就没什么问题了。思路:本题的关键是如何将树映射
阅读全文
摘要:题意:给出n个数的非递减序列,进行q次查询。每次查询给出两个数a,b,求出第a个数到第b个数之间数字的最大频数。如序列:-1 -1 1 1 1 1 2 2 3第2个数到第5个数之间出现次数最多的是数字1,它的频数3。思路:假设查询时的参数为a, b。这道题查询时有以下两种情况:1、 num[a] = num[b]. 即区间内的数字全相同,此时答案为b - a + 1。2、 如果不相同,则以一般情况来讨论。见下图。因为序列为非递减序列,因此值相同的数字必然连续出现。将区间分为3部分。num[a]以及与它值相同的区域构成第一部分,num[b]以及与它值相同的区域构成第三部分。区间[a, b]中剩下
阅读全文
摘要:题意:有n头牛,编号从1到n,每头牛的身高已知。现有q次询问,每次询问给出a,b两个数。要求给出编号在a与b之间牛身高的最大值与最小值之差。思路:标准的RMQ问题。RMQ问题是求给定区间内的最值问题。当询问量巨大时,最朴素算法必然超时。解决RMQ比较优秀的算法有ST算法。其预处理时间复杂度为O(nlogn),询问的时间复杂度为O(1)。ST的思想如下:假设num数组中的数据从第0位开始存储。用两个二维数组tmax,tmin分别求区间最大与最小值。ST的关键是数组区间的分割。tmax和tmin的下标是一致的,暂且拿tmax举例。预处理:预处理阶段运用的是DP的思想。tmax[i][j]内的值为区
阅读全文
摘要:遇见poj上最浪漫的题目。。题目里图片以上几百词为一篇模板级英文情书。这情感和细腻的文笔深深地打动了我。。不会写情书的童鞋速度进来学习。传送门题意:坐标系内有n个星星,每个星星都有一个亮度c (1 2 #include 3 #include 4 #define maxn 22222 5 #define lson l, m, rt > 1;28 if (key == x[m]) return m;29 else if (key > 1;59 if (L <= m) update(L, R, c, lson);60 if (m < R) update...
阅读全文
摘要:题意:已知n个星星的坐标。每个星星都有一个等级,数值等于坐标系内纵坐标和横坐标皆不大于它的星星的个数。星星的坐标按照纵坐标从小到大的顺序给出,纵坐标相同时则按照横坐标从小到大输出。 (0 2 #include 3 #define maxn 33333 4 #define lson l, m, rt > 1;12 int ret = 0;13 if (s > 1;33 if (s <= m) update(s, lson);34 else update(s, rson);35 PushUp(rt);36 }37 int main()38 {39 ...
阅读全文
摘要:第一次做线段树扫描法的题,网搜各种讲解,发现大多数都讲得太过简洁,不是太容易理解。所以自己打算写一个详细的。看完必会o(∩_∩)o顾名思义,扫描法就是用一根想象中的线扫过所有矩形,在写代码的过程中,这根线很重要。方向的话,可以左右扫,也可以上下扫。方法是一样的,这里我用的是由下向上的扫描法。 如上图所示,坐标系内有两个矩形。位置分别由左下角和右上角顶点的坐标来给出。上下扫描法是对x轴建立线段树,矩形与y平行的两条边是没有用的,在这里直接去掉。如下图。现想象有一条线从最下面的边开始依次向上扫描。线段树用来维护当前覆盖在x轴上的线段的总长度,初始时总长度为0。用ret来保存矩形面积总和,初始时为.
阅读全文
摘要:题目大意:一个圆环上有n(4 2 #include 3 #define maxn 100010 4 #define lson l, m, rt > 1;28 build(lson);29 build(rson);30 PushUp(rt);31 }32 void update(int a,int b,int l,int r,int rt)33 {34 if (l == r && l == a)35 {36 lmax[rt] = rmax[rt] = tmax[rt] = lmin[rt] = rmin[rt] = tmin[rt] = s...
阅读全文

浙公网安备 33010602011771号