/* poj 3321 Apple Trie 这道题的关键是如何将一个树建成一个一维数组利用树状数组来解题! 可以利用dfs()来搞定,我们在对一个节点深搜后,所经过的节点的数目就是该节点的子树的数目 所以我们利用start[i]数组来记录 i 节点在一维数组的起始位置, 而end[i]则...
分类:
移动开发 时间:
2014-07-07 23:08:32
阅读次数:
400
树状数组是一种优雅的数据结构,利用的是前缀和的思想,相当于是线段树的一部分,常常用来快速解决区间求和问题,比相应的线段树要快,因为常数小。单点更新+区间求和这个是树状数组最最基础的应用了给个例题 hdu 1166 1 #include 2 #include 3 #include 4 #incl...
分类:
其他好文 时间:
2014-06-30 14:33:57
阅读次数:
210
题目链接:http://poj.org/problem?id=3468
题目大意:给出一组数组v[i],有两种操作,一种给出两个数a,b,要求输出v[a]到v[b]之间的和,另一种给出三个数a,b,c,让v[a]到v[b]之间的数全都加上c。
完全是树状数组能够实现的功能,但是如果就这样单纯的套用模板,做第二种操作是更新每个值,这样的操作就有可能超时。
换一种思路,既然第二种操作是给某区间上...
分类:
其他好文 时间:
2014-06-29 20:47:30
阅读次数:
216
大意:给一个数组,先求出SUM[I],然后动态的求出1-I的SUM[I]的和, 这题得化公式: 树状数组维护两个和:SUM(A[I])(1#include#include#includeusing namespace std;typedef long long ll;const int N=...
分类:
其他好文 时间:
2014-06-27 17:53:38
阅读次数:
141
题目大意:
三个操作
D pos 将pos位置摧毁,让它和周围不相连。
Q pos 问和pos 相连的有多少个村庄。
R 修复最近摧毁的村庄。
思路分析:
树状数组记录这个区间有多少个1。
如果 [s-e] 有e-s+1个1 的话。那么这个区间是相连的。
这样的话,我们就可以用二分的办法求出与某个位置最大相连的数量。
还有这里二分
while(l
{
i...
分类:
其他好文 时间:
2014-06-27 09:54:14
阅读次数:
183
题目链接:点击打开链接
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
#define N 500005
#define ll int
ll n;
ll c[N], maxn;
inline ll...
分类:
其他好文 时间:
2014-06-27 09:06:04
阅读次数:
183
有工具在手,这题就是一个模板题,就是有点不清楚,最后问的是单个元素的值,它怎么sum求出来的
#include
#include
#include
#include
using namespace std;
#define maxn 1005
int c[maxn][maxn];
int Row, Col;
inline int Lowbit(const int &x)
{
...
分类:
其他好文 时间:
2014-06-27 07:38:00
阅读次数:
281
题目链接:点击打开链接
给定n个操作,m长的序列a
下面n个数
if(co>=0)则向字符串添加一个co (开始是空字符串)
else 删除字符串中有a的下标的字符
直接在序列上搞,简单模拟
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using na...
分类:
其他好文 时间:
2014-06-26 07:52:58
阅读次数:
226