随笔分类 - 线段树 && 树状数组&&主席树
摘要:HDU 5861 题意 在n个村庄之间存在n-1段路,令某段路开放一天需要交纳wi的费用,但是每段路只能开放一次,一旦关闭将不再开放。现在给你接下来m天内的计划,在第i天,需要对村庄ai到村庄bi的道路进行开放。在满足m天内花费最小的情况下,求出每天的花销。 分析: 我们可以想到用线段树想到记录每一
阅读全文
摘要:您需要维护一个序列,其中需要提供以下操作: 插入一个数到序列的第 t 版本使其成为序列的第 k 项,这个数为 x ; 删除序列的第 t 版本的第 k 项; 查询序列的第 t 版本的第 k 项。 第 0 个版本为空序列。修改操作不会影响被修改的版本,而总是产生一个新版本。 您需要维护一个序列,其中需要
阅读全文
摘要:您将获得一个包含N个节点的树。树节点的编号从1到Ñ。每个节点都有一个整数权重。 我们会要求您执行以下操作: uvk:询问从节点u到节点v的路径上的第k个最小权重 输入 在第一行中有两个整数Ñ和中号。(N,M <= 100000) 在第二行中有N个整数。第i个整数表示第i个节点的权重。 在接下来的N-
阅读全文
摘要:取板粗 好东西来的 1.(HDOJ2665)http://acm.hdu.edu.cn/showproblem.php?pid=2665 (POJ2104)http://poj.org/problem?id=2104 (POJ2761)http://poj.org/problem?id=2761 题
阅读全文
摘要:Problem:Portal传送门 Problem:Portal传送门 原题目描述在最下面。 我理解的题意大概是:有n次涨潮和退潮,每次的范围是个x×y的矩形,求n次涨退潮后,潮水痕迹的长度。 不存在此i,j∈[1,n],i≠j,xi≤xj且yi≤y Solution: 每次潮水可能会冲刷掉之前的潮
阅读全文
摘要:题目描述 PP大厦有一间空的礼堂,可以为企业或者单位提供会议场地。这些会议中的大多数都需要连续几天的时间(个别的可能只需要一天),不过场地只有一个,所以不同的会议的时间申请不能够冲突。也就是说,前一个会议的结束日期必须在后一个会议的开始日期之前。所以,如果要接受一个新的场地预约申请,就必须拒绝掉与这
阅读全文
摘要:题目分析 看题面可以知道题目的要求: 对于一个长度为N的序列a支持以下操作 1.令所有满足l<=i<=r的ai全部变为ai*c。 2.令所有满足l<=i<=r的ai全部变为ai+c。 3.求所有满足l<=i<=r的ai的和。 显然这是对一个区间做加法和乘法的操作,可以使用线段树完成。 联想只有区间加
阅读全文
摘要:题意:n个房间,每个房间有ai盏旧灯,每个月可以买m盏新灯,要求:按房间顺序换灯,如果剩下的新灯数目大于ai,那么进行更换,否则跳过该房间,判断下一个房间。如果所有房间都换完灯,那么久不会再买新灯。 q次询问,每次询问该月已换的房间数以及剩余的新灯数量。 题解:线段树记录最小值,然后一遍模拟 #in
阅读全文
摘要:给一棵N个点的树,对应于一个长为N的全排列,对于排列的每个相邻数字a和b,他们的贡献是对应树上顶点a和b的路径长,求所有排列的贡献和。 分析: 经过简单的分析可以得知,全部的贡献其实相当与(这颗树上各个点的距离之和)*jichen(n-1) *2; 不相信可以举个简单的例子,或者用计算机打表可以知道
阅读全文
摘要:思路: 引:如果暴力枚举两点再求距离是显然会超时的。转换一下思路,我们可以对每条边,求所有可能的路径经过此边的次数:设这条边两端的点数分别为A和B,那 么这条边被经过的次数就是A*B,它对总的距离和的贡献就是(A*B*此边长度)。我们把所有边的贡献求总和,再除以总路径数N*(N-1)/2,即为最 后
阅读全文
摘要:二维平面上N个点,从(0,0)出发到(1e9,1e9),每次只能往右,上,右上三个方向移动, 该N个点只有从它的左下方格点可达,此时可获得收益。求该过程最大收益。 分析:我们很容易就可以想到用DP,假设这个位置是相对上一个位置的方向而来,但是复杂度达到N^2 ,这样是不行的; 我们可以利用坐标的信息
阅读全文
摘要:题目大意:操作①:往盒子里放一个数。操作②:从盒子里扔掉一个数。操作③:查询盒子里大于a的第K小数。 解题思路: 由于模型是盒子,而不是序列,所以可以用树状数组的顺序维护+逆序数思想。 放一个数 Add(val,1)Add(val,1) 类似维护逆序数的方法,对应位置上计数+1。 注意Add的whi
阅读全文
摘要:题意: 西海岸和东海岸有分别有n (1~n)个和m (1~m)个城市, 两个海岸的城市之间有k条公路连通, 公路会相交, 现在给出城市和公路的信息问你由这些公路组成的复杂交通有多少个交点 (如果两个条公路的起点或者终点相同那这两点不算做相交) 分析:先分析题目案例可以知道当y1>y2时,这样是肯定会
阅读全文
摘要:题意 : 给出一个数n(n<500,000), 再给出n个数的序列 a1、a2.....an每一个ai的范围是 0~999,999,999 要求出当通过相邻两项交换的方法进行升序排序时需要交换的次数 分析:其实经过一次模拟后,会发现奇妙的东西,这个排序都是按位置排的,最大要求到最大,最小要去到最小,
阅读全文
摘要:我对树状数组的认识可以参考视频1与视频2,每个人的理解不一样,建议去观看大牛的理解,视频1讲的不太深入,但还是推荐先去看视频1,再去看视频2. 单点修改,区间最大 #include<cstdio> #include<iostream> #include<cstring> #include<cmath
阅读全文
摘要:http://poj.org/problem?id=3368 给出一个升序数组和 q 个查询。对每个查询,返回 a b 之间出现次数最多的那个元素的出现次数。 这一类区间查询的问题很容易想到用线段树来做。显然我们首先要线段树的节点中维护么i各区间的最大次数。但这样是不够的,如果一个查询区间跨越了两个
阅读全文
摘要:飞翔 题意 : 给定一个区间长度 n ,接下来给出 m 个子区间,要求最少选出多少个区间才能使得 1~n 这个区间被所选的所有子区间覆盖 分析: 首先是动态规划,dp[i]表示把最大值从1位置搞到第i个小装置结尾最少需要多少个小装置,这样的话,从小到大遍历所有装置,每次查询当前装置之前的装置区间和当
阅读全文
摘要:题意 : 在墙上贴海报, n(n<=10000)个人依次贴海报,给出每张海报所贴的范围li,ri(1<=li<=ri<=10000000)。求出最后还能看见多少张海报。 分析 : 很容易想到利用线段树来成段置换,最后统计总区间不同数的个数。但是这里有一个问题,就是区间可以很大,线段树开不了那么大的空
阅读全文
摘要:约瑟夫问题的升级版,每次出去的是前一个出去的人位置+手上的数字(正往前,负往后)。第i个出去的人拿的糖是i的约数的个数。求拿糖最多的人和他的糖果数。 这里用到了反素数的知识,在这直接打表 题目 AC代码: #include<stdio.h> #include<string.h> #define ls
阅读全文
摘要:飞翔 问题是这样的:现在有n个人要买票,但是天黑可以随便插队。依次给出将要买票的n个人的数据信息。包含两项:pos,当前第i号人来了之后他肯定要插入到pos这个位置,如果当前pos无人,那最好了,直接把他插入即可。但如果pos这个位置有人了,从现实意义上讲,第i号人插入之后,相当于他 后面的人在原来
阅读全文

浙公网安备 33010602011771号