树状数组
hill_555
这个作者很懒,什么都没留下…
展开
-
hrbust1400 11年省赛 树状数组(逆序数)
题意:给出 车辆起始位置X i 和速度 V i求超车次数 #include #include #include #include using namespace std; struct node { int v,p; }q[100001]; int cmp(struct node a,struct node b) { if(a.p==b.p)return a.v>b.v;原创 2013-04-15 00:29:19 · 719 阅读 · 0 评论 -
poj3321 树状数组+dfs(时间戳)
poj3321 树状数组 题意:给定一棵树,某些节点上有苹果,多次询问各子树上的节点数,并且在询问的中途随时可能新增和删除苹果。 分析:dfs遍历树的同时,对每个点标注时间,每个点有一个开始时间和一个结束时间,把这两个时间当做下标,该点的苹果个数(1或0)填入数组的两个对应位。子树中结点的时间段一定是根节点时间段的子段,所以求子树苹果数,只需求数组某区间的和即可。用树状数组比较快。 #inc原创 2013-04-15 00:08:17 · 746 阅读 · 0 评论 -
poj2481 Cows(数状数组)
题意转自网络 题意:FJ有n头牛(编号为1~n),每一头牛都有一个测验值[S, E],如果对于牛i和牛j来说,它们的测验值满足下面的条件则证明牛i比牛j强壮:Si Ej - Sj。现在已知每一头牛的测验值,要求输出每头牛有几头牛比其强壮。 分析:排序的时候先y由大到小排,y相同时x由小到大排 看左上角有多少个点 #include #include #include #includ原创 2013-04-27 19:09:25 · 596 阅读 · 0 评论 -
poj3067 逆序数 (裸)
#include #include #include #include using namespace std; #define clr(x) memset(x,0,sizeof(x)) #define INF 0x1f1f1f1f int cal[1111*1111];//树状数组用 int lowbit(int x) {return x&(-x);} int getsum(int x) {原创 2013-04-27 19:47:22 · 551 阅读 · 0 评论 -
区间内有多少个不同的数字(离线树状数组)
知道了区间的两个端点s和e,那么这个区间内有多少个不同的数字 先把询问存一起 按右端点排个序 每次用map看出没出现过 一直保留最后出现的那个 再算出所有查询。。 #include #include #include #include #include using namespace std; #define clr(x) memset(x,0,sizeof(x)) #define I原创 2013-07-28 16:22:55 · 888 阅读 · 0 评论 -
codeforces 191 E (树状数组+二分)
转自:http://www.cnblogs.com/wuyiqi/archive/2012/06/01/2531301.html 题意,给你n个数,让你求第k大的连续区间和是多少 例如 3 4 1 4 2 最大的区间和 1 4 2 第二大 4 2 第三大 1 4 第四大即答案 4 首先要看出单调性:枚举的和越大,区间和大于它的区间数就越少 所以可转载 2013-09-06 16:20:25 · 800 阅读 · 0 评论 -
hdu4000 Fruit Ninja(树状数组)
问一个1..n 的排列中,有多少组数满足 i 符合条件的答案即为 小大中的情况总数,而小大中 = 小XX - 小中大 可以求出每个数前面小于它的数的个数x,和后面大于它的个数y, 那么每个数对应的 小XX 数量为 y*(y-1)/2 每个数对应的 小大中数量为 x*y 算的是错乱的算的 res+时 当前数是小XX的小 res-时 当前数是小中大的中 #i原创 2013-09-06 23:17:05 · 786 阅读 · 0 评论