![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
树状数组||线段树||矩形树
文章平均质量分 75
还有多远
这个作者很懒,什么都没留下…
展开
-
HDOJ-2871(线段树)
真是个好题,虽然WA了好几次,但都是自己SB。。。包含了线段树所有的操作,看了这篇博文又加深了一次理解:http://www.cnblogs.com/scau20110726/archive/2013/05/07/3065418.html掉进的坑:(1)因为每reset一次,就重新build一次,TLE,看了discuss才想起来,同一个case中reset,用update就行原创 2015-08-13 15:54:11 · 400 阅读 · 0 评论 -
HDOJ-3974(线段树,区间修改点查询)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=3974分析:修改父节点的值,所有子节点的值都被修改,典型的线段树操作,即修改代表整个区间的父节点,则区间内的所有点都被修改,一个问题是,这颗树并不是天然的线段树,因此需要先将原来的节点映射到对应的区间,这一点借助先序遍历dfs形成的自然顺序即可完成,并且父节点一方面代表整个区间,另一方面映射成区间左端点原创 2015-03-06 14:53:41 · 613 阅读 · 0 评论 -
POJ-2985(树状数组 + 并查集 + 二分)
题目:http://poj.org/problem?id=2985这题考察了两个点呢,组合并用到了并查集,求第K大的数用到了树状数组,刚开始WA了几次,发现是在组合并之后仅仅update(*, -1)了一次,因为是删除了两个组增加了一个组,应该是update(*, -1)两次,不细心啊。。。#include #include #include using namespace原创 2015-02-26 19:55:41 · 529 阅读 · 0 评论 -
POJ-2892(树状数组 + 二分)
题目:http://poj.org/problem?id=2892poj上1A,但是拿到hdoj1540上却WA了,看了discuss发现在hdoj需要考虑一个村庄被摧毁和恢复多次的情况#include #include #define MAX 50005int N, M;int c[MAX] = {0}, b[MAX];bool a[MAX] = {0};int s原创 2015-02-25 22:29:17 · 522 阅读 · 0 评论 -
POJ-1769(线段树)
题目:http://poj.org/problem?id=1769看完题目一想贪心不就可以了吗,写了之后WA,看了discuss才发现自己读题都没读清楚Σ( ° △ °|||)︴题目要求找出subsequence,想着DP就行了,令f[x]表示覆盖[1,x]的区间至少需要的sorter个数,则对于一个sorter [a,b],有f[b] = min(f[b], f[a]+1),想想又不太对原创 2015-02-12 19:34:08 · 551 阅读 · 0 评论 -
POJ-2155(二维树状数组)
题目:http://poj.org/problem?id=2155学习了这篇博客的讲解彻底弄懂二维树状数组,做了二维树状数组的第1题。虽然是二维,但跟一维的思想基本相同,只不过一维时用C[i]表示a[i-lowbit[i]+1] ~ a[i]的和,二维时用c[i][j]表示a[i-lowbit[i]+1][j-lowbit[j]+1] ~ a[i][j]的和。先来看一维的问题,则矩阵退原创 2015-02-12 13:02:52 · 1565 阅读 · 0 评论 -
POJ-1990(树状数组)
题目:http://poj.org/problem?id=1990一开始咋都想着得N*N,毕竟pair在那搁着来,看了题解才知道原来可以用树状数组:对于每个cow[i]来说,由它的v[i]决定的有两部分,左边部分和右边部分,如果把cow关于v升序排列,逐个求得由每个cow[i]决定的volume,就可以复用前面的计数了#include #include #include原创 2015-02-25 13:54:16 · 472 阅读 · 0 评论 -
POJ-1944(枚举拆环)
看到这个题,一开始没有思路,想了想,DP肯定不行,不满足无后效性,贪心感觉又不好原创 2014-11-10 00:06:36 · 546 阅读 · 0 评论 -
POJ-3468(线段树区间更新区间查询)
题目:http://poj.org/problem?id=3468终于将线段树的令一种应用原创 2014-08-12 20:54:23 · 376 阅读 · 0 评论 -
HDOJ-1394(逆序对)
学到的东西:(1)原创 2014-07-24 18:51:20 · 485 阅读 · 0 评论 -
HDOJ-1556(线段树||树状数组,区间更新+点查询)
裸的线段树:原创 2014-07-15 00:21:15 · 434 阅读 · 0 评论 -
HDOJ-1166(线段树点更新 + 区间查询)
试了一个完全二叉树,貌似效率有点低:原创 2014-07-21 18:28:33 · 416 阅读 · 0 评论 -
HDOJ-1823(矩形树,点更新 + 区间查询)
没注意到几个细节,WA了一天啊:(1)输入的活泼值和缘分值,虽然说是浮点数,但可能是以整数形式输入的(为避免浮点精度降低,我把它们当做字符串输入,却忽略了没有小数点的情况,WA死了)(2)看了discuss才知道,查询区间A1、A2和H1、H2,题目中没有说哪个是左哪个是右(我以为先输入的是左,后输入的是右,当左大于右时,输出-1,WA了好几次)矩形树的思想,参考了这篇博文:http:原创 2014-07-22 01:42:31 · 429 阅读 · 0 评论 -
HDU-4217(树状数组)
题意就是在1~N中每次找到第k小的数并删除,范围固定第k小的数,就是树状数组或者线段树的应用,一个细节是结果需要用long long,因为262144*(262144+1)/2超过了32位表示范围。#include #include #define MAX 262200int n, q, c[MAX];inline int lowbit(int x){ return x &原创 2015-08-01 23:28:21 · 707 阅读 · 0 评论