HDU 1394 Minimum Inversion Number (数据结构-线段树)
题目大意:
求逆序数。也就是给你一个序列,每次求逆序数,然再把第一个数放到这个序列的末尾,构成新的序列。问你这n个序列的最小的逆序数。
解题思路:
1、对于每个序列,其原来的逆序数记为 pre , 如果当前把该序列 第一个数 a[0] 移动到尾部,那么新序列的逆序数为 pre-a[i]+(n-a[i]-1)
因为序列中比a[i]大的数有 n-a[i]-1 个,比a[i]小的有 a[i]个。
因此只需求出...
分类:
其他好文 时间:
2014-05-12 07:07:01
阅读次数:
301
HDU 1264 Counting Squares (线段树-扫描线-矩形面积并)
题目大意:
给定你一些矩形左下右上角坐标点,或者左上右下坐标点,求这些矩形的面积并。
解题思路:
利用线段树扫描线的知识,此题不需要离散化。...
分类:
其他好文 时间:
2014-05-12 06:43:25
阅读次数:
442
线段树札记线段树不是区间树,线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。注意他是把一段连续的区间分为单元区间为叶子节点的一颗数,以此为基础,展开一系列牛逼的计算。首先就是如何建立这么一个线段树?如此递归地建立,对于线段树中的每一个非叶子...
分类:
其他好文 时间:
2014-05-11 22:58:35
阅读次数:
458
题意:
给定2个操作
0、把区间的每个数sqrt
2、求和
因为每个数的sqrt次数很少,所以直接更新到底,用个标记表示是否更新完全(即区间内的数字只有0,1就不用再更新了)
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
#define N 1000...
分类:
其他好文 时间:
2014-05-11 21:02:45
阅读次数:
325
题意:给你一个长度数列,再给你m个询问(一个区间),问你在这个区间里面有多少个数与其他的数都互质。解题思路:你看这种类型的题目都可以肯定这是
离线+树状数组(线段树)。主要就是他的更新信息。这里我的处理是先把1-200000(每个数的范围)数里面所有的质因子求出来。然后从后往前遍历数组。会出现以下几...
分类:
其他好文 时间:
2014-05-11 14:58:56
阅读次数:
288
这题也算比较容易的了。
如果哪个区间已经没有黑色的话,就不用update了,就是因为这个原因WA了2发,唉……
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define PI acos(-1.0)
...
分类:
其他好文 时间:
2014-05-09 22:55:55
阅读次数:
341
刚开始做的时候用线段树做的,然后就跳进坑里了……因为要开方,所以区间的值都得全部变,然后想用lazy标记的,但是发现用不了,单点更新这个用不了,然后就不用了,就T了。然后实在不行了,看了别人的题解,原来是用树状数组+并查集的方法,唉……没想到啊!
因为开方之后多次那个数就会变成1了,所以是1的时候开方下去就没用了。树状数组更新的时候就把其更新的差更新即可,太机智了这题……
昨天做了,然后出错找...
分类:
其他好文 时间:
2014-05-09 22:35:22
阅读次数:
290
这题从昨晚搞到现在敲了又改好久,刚开始是update中错了,然后找到了。但是还错,然后因为题目没有数据的范围提示,所以弄了好久都不知道哪错了,最后看评论才知道是超int了,改了之后还有错,然后才发现虽然改成long long了,但是输出的时候没改,哈哈……
#include
#include
#include
#include
#include
#include
#include...
分类:
其他好文 时间:
2014-05-09 01:20:40
阅读次数:
280
HDU 4578
线段树区间更新
操作有:
区间所有数add(c)
区间所有数mul(c)
区间所有数set(c)
查询有:
区间所有数的p次方和(p>= 1 && p
关键是区间更新的三种操作的优先级的确定清楚
关键是:down和update中对区间的更新操作是一回事,可以写成函数方便编程
//#pragma warning (disable: 47...
分类:
其他好文 时间:
2014-05-09 01:08:38
阅读次数:
432