/* poj 3321 Apple Trie 这道题的关键是如何将一个树建成一个一维数组利用树状数组来解题! 可以利用dfs()来搞定,我们在对一个节点深搜后,所经过的节点的数目就是该节点的子树的数目 所以我们利用start[i]数组来记录 i 节点在一维数组的起始位置, 而end[i]则...
分类:
移动开发 时间:
2014-07-07 23:08:32
阅读次数:
400
大意:给一个数组,先求出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
题目链接:http://poj.org/problem?id=2155
题目大意:给出一个N*N的0矩阵,下面给出两种指令:1. 给出的第一个数据为‘C’,再给出四个整形数据,x1,y1,y1,y2,对以(x1,y1)(x2,y2)分别为左上角和右下角坐标的矩阵内的元素进行反转(0变1,1变0) 2. 给出的第一个数据为‘Q’,再给出两个数据,x,y,然后输出此时这个坐标上的元素...
分类:
其他好文 时间:
2014-06-24 22:29:35
阅读次数:
271
题目链接:http://poj.org/problem?id=1195
纯纯的二维树状数组,不解释,只需要注意一点,由于题目中的数组从0开始计算,所以维护的时候需要加1。因为树状数组的下标是不能为1的
代码:
#include
#include
#define N 1030
using namespace std;
int c[N][N];
int cas,n,x,y,a,l,b,r,t...
分类:
其他好文 时间:
2014-06-24 21:15:14
阅读次数:
154
题目链接:http://acdream.info/problem?pid=1019
题意:两种操作,第一种将字符串某个位置的字符换为另一个字符;第二种查询某个连续子序列是否是回文串;
解法:有两种hash的办法,所以写了两种解法;首先hash是x1 * p^1+ x2*p^2 +x3*p^3...可以用树状数组维护前缀和,维护两个串,一个是正串,另一个是反串用于比较。比较时候乘以相应的p倍数判...
分类:
其他好文 时间:
2014-06-24 19:25:19
阅读次数:
252
题目链接:http://codeforces.com/problemset/problem/216/D
题意:
对于一个梯形区域,如果梯形左边的点数!=梯形右边的点数,那么这个梯形为红色,否则为绿色,
问:
给定的蜘蛛网中有多少个红色。
2个树状数组维护2个线段。然后暴力模拟一下,因为点数很多但需要用到的线段树只有3条,所以类似滚动数组的思想优化内存。
#include
#includ...
分类:
Web程序 时间:
2014-06-22 07:11:35
阅读次数:
205