
Acm_线段树
文章平均质量分 76
徵羽調_xiao賤
这个作者很懒,什么都没留下…
展开
-
hdu_1541 Stars(线段树)
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1541分析:一开始读不懂题目呀。 题意:平面上有N个点(x,y),定义一个点的Level等于x坐标不大于它且y坐标不大于它的点的数量。统计Level为0的点,Level为1····Level为N-1的点各有多少个。 算法分析:先按x递增,y递增排序;整理成线段数就是,逐个插入y原创 2013-07-20 10:14:52 · 1016 阅读 · 0 评论 -
poj_2481 Cows
原题链接:http://poj.org/problem?id=2481分析:在纸上画一下区间,题目问的是比该区间大的区间有多少,化成二维点坐标就是在该点左上角的点有多少个。做y降序,x升序排序。则和数星星等级,是一样的了。我的代码:#include#include#includeusing namespace std;#define MAXN 100005struct No原创 2013-09-11 16:01:03 · 749 阅读 · 0 评论 -
poj_1195 Mobile phones
原题链接:http://poj.org/problem?id=1195分析: 二维树状数组的简单应用,理解了怎么求区间和是关键。一维的可以做一下染气球的题目。我的代码:#include#include#define MAXN 1230int n;int C[MAXN][MAXN];void add(int a,int b,int m){ for(int i=a;i<原创 2013-09-11 14:52:33 · 855 阅读 · 0 评论 -
poj_3067 Japan
原题链接:http://poj.org/problem?id=3067分析: 在纸上画一下就会发现,当我们输入的两个数都按从大到下排序的数时候,就是找当前插入的数与前面的的数的逆序对。(从小到大排,就是比它大的数的个数)。我的代码:#include#include#includeusing namespace std;typedef long long LL;#define原创 2013-09-11 08:53:18 · 807 阅读 · 0 评论 -
poj_2155 Matrix
原题链接:http://poj.org/problem?id=2155分析: 2维的树状数组入门题。首先可以做一下一维的情况hdu_1556的Color the ball,理解一个向前更新,下后查找。 数组中存放的是操作次数,由树状数组的性质,对于一维的,我们更新[a,b]的时候,我们对[1,b]区间+1,对[1,a-1]区间-1; 对于二维原创 2013-08-30 10:09:13 · 567 阅读 · 0 评论 -
poj_2299 Ultra-QuickSort
原题链接:http://poj.org/problem?id=2299分析:树状数组求逆序对+离散化。 1:因为“n distinct integers”,所以不会有重复的数,可以用hash的方式让数与下标一一对应。如题中样例。 输入的数 : 9 1 0 5 4 排序后的数: 0 1 4 5 9 对应的下标: 1 2原创 2013-09-09 16:56:06 · 646 阅读 · 0 评论 -
hdu_3874 Necklace
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=3874】分析:线段树,区间内不重复数的和。 1、 用vis[]数组记录将要插入的数是否在线段树中,在的话就删除(在相应的位置减去这个数)原来位置的值,将这个值插到现在的位置。 如:1 1 1 2 3 5 插入第二个1的是好,第一个1在线段树[1,1]的位置,这原创 2013-08-23 10:20:44 · 669 阅读 · 0 评论 -
hdu_1166 敌兵布阵(树状数组)
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1166分析: 今天看了树状数组,发现树状数组解这道题,方便很多呀↖(^ω^)↗, 刘汝佳的《算法竞赛入门经典——训练指南》的194页,树状数组就讲的很好。 实在是不懂就记住普通数组转换成树状数组的公式得了,还是要清楚树状数组的存储结构。我的代码:原创 2013-07-20 13:22:43 · 669 阅读 · 0 评论 -
hdu_1698 Just a Hook
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1698分析: 由样例输入输出可以看出来,这只胖子的肉钩的每个小段开始的时候是铜的。 所谓的线段树整段更新问题,即区域覆盖问题。这个时候要把线段树的节点的值定义为颜色类型。。不再是区间的和了(不然就超时了)。结构体如下:#define MAXN 100010st原创 2013-07-22 10:59:57 · 649 阅读 · 0 评论 -
hdu_1541 Stars (树状数组)
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1541分析: 题意即线段树方法解:http://blog.youkuaiyun.com/u010885608/article/details/9388695 用树状数组解得算法分析:插入(x,y)点,先统计[0,y]有多少点已插入,总数即为点(x,y)的Lev。再插入y值,更原创 2013-07-20 14:45:40 · 911 阅读 · 0 评论 -
hdu_1166 敌兵布阵(线段树)
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1166分析:用数组解这道题,果断超时。传说中的线段树入门题-,-。我的代码:#include#define max 50000struct Node{ int left; int right; int sum;}segTree[4*max+10];int p[max原创 2013-07-19 16:42:08 · 635 阅读 · 0 评论 -
hdu_1754 I Hate It
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1754分析:简单线段树,更新点的最大值,随后更新上层区间的最值;找区间的最大值。我的代码:#include#define MAXN 200005#define N 5005int n,m;struct Node{ int l,r; int max;}segTree原创 2013-07-20 20:17:29 · 630 阅读 · 0 评论 -
poj_3321 Apple Tree
原题链接:http://poj.org/problem?id=3321分析:主要是建立时间戳,通过DFS的次顺确定一个树叉上的区间。我的代码:#include#define MAXN 100005struct Node{ int data; struct Node *next;}list[MAXN];//struct Node1{// Node *原创 2013-09-13 09:01:59 · 653 阅读 · 0 评论