树状数组
文章平均质量分 75
九野的博客
这个作者很懒,什么都没留下…
展开
-
FZU 2134 && FOJ11月赛C题 树状数组
中文题意不再赘述 思路:一边维护 1-n的和 一边累加 1- 输入的数u 和树状数组裸题 #include#include#includeusing namespace std;inline int Max(int a,int b){return a>b?a:b;}inline int Min(int a,int b){return a<b?a:b;}原创 2013-11-10 20:12:02 · 1599 阅读 · 0 评论 -
COGS 577 蝗灾 cdq分治+树状数组
题目链接:点击打开链接cdq入门资料:点击打开链接思路:首先根据上面的ppt可知cdq分治:solve(l, mid);计算[l,mid] 对 [mid+1, r] 区间的影响solve(mid+1, r);计算影响部分,把询问拆成2个,对x排序后搞搞即可。#include #include #include #include #include #in原创 2015-05-10 18:16:36 · 1397 阅读 · 0 评论 -
HDU 5126 stars cdq分治+树状数组
题目链接:点击打开链接题意:T个casen个操作1、 (x,y,z) 在三维平面的点上增加12、询问区间范围内的权值和。思路:cdq分治套cdq分治,然后套树状数组即可。。#include #include #include #include #include #include #include #include #include #inc原创 2015-05-11 23:20:19 · 1641 阅读 · 0 评论 -
Codeforces 390E Inna and Large Sweet Matrix 树状数组改段求段
题目链接:点击打开链接题意:给定n*m的二维平面 w个操作1、0 (x1,y1) (x2,y2) valuefor i : x1 to x2for j : y1 to y2 mp[i][j] += value;2、1 (x1, y1) (x2 y2)ans1 = 纵坐标在 y1,y2间的总数ans2 = 横坐标不在x1,x2间的总数puts(ans1-ans2)原创 2015-07-07 14:09:18 · 1036 阅读 · 0 评论 -
树状数组模版
一维数组数组形式inline int Lowbit(int x){return x&(-x);}void change(int i,int x)//单点更新i点改为x{ while(i<=n) { c[i]+=x; i+=Lowbit(i); }}int sum(int x){//区间求和 [1,x]原创 2013-08-09 10:34:17 · 1570 阅读 · 0 评论 -
HDU 5372 Segment Game 树状数组
链接Segment GameTime Limit: 3000/1500 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 273 Accepted Submission(s): 48Problem DescriptionLillian原创 2015-08-11 20:33:45 · 1481 阅读 · 0 评论 -
HDU 5333 Undirected Graph LCT+BIT
链接Undirected GraphTime Limit: 5000/2500 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 184 Accepted Submission(s): 38Problem DescriptionAs w原创 2015-08-02 22:34:38 · 1277 阅读 · 0 评论 -
HDU 5296 Annoying problem LCA+树状数组
题解链接Annoying problemTime Limit: 16000/8000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 480 Accepted Submission(s): 146Problem Description原创 2015-07-22 19:39:22 · 1522 阅读 · 0 评论 -
Codeforces 570D TREE REQUESTS dfs序+树状数组
链接题解链接:点击打开链接题意:给定n个点的树,m个询问下面n-1个数给出每个点的父节点,1是root每个点有一个字母下面n个小写字母给出每个点的字母。下面m行给出询问:询问形如 (u, deep) 问u点的子树中,距离根的深度为deep的所有点的字母能否在任意排列后组成回文串,能输出Yes.思路:dfs序,给点重新标原创 2015-08-14 20:02:04 · 2541 阅读 · 0 评论 -
Codeforces 528B Clique Problem dp+线段树(or 树状数组)
题目链接:点击打开链接题意:给定数轴上的n个点。下面n行每行两个数 xi, wi 表示点和点权。对于任意两个点u, v若dis(u,v) >= u_w+v_w 则这两个点间可以建一条边。(in other words 若两点间距离大于两点的权值和则可以建边)找一个最大团,输出这个最大团的点数。其实对于一个权值点我们可以认为是一个区间如: 4 5 ,可以认为是区间[-原创 2015-03-18 16:19:09 · 1492 阅读 · 0 评论 -
Codeforces 101B Buses 排序+树状数组
题目链接:点击打开链接当转移[l,r] 区间时, 若[0, r-1] 这里的区间都已经转移完毕时是最优的,所以按右端点升序,同理右端点相同时左端点升序,然后树状数组维护一下前缀和。#include #include #include #include #include using namespace std;#define N 100005#define mod 100000原创 2014-08-31 17:40:53 · 1406 阅读 · 0 评论 -
Codeforces 61E Enemy is weak 求i<j<k && a[i]>a[j]>a[k] 的对数 树状数组
题目链接:点击打开链接题意是求 ia[j]>a[k] 的对数如果只有2元组那就是求逆序数的做法三元组的话就用一个树状数组x表示 数字i前面有多少个比自己大的个数然后每次给这个y数组求和,再把x中>a[i]的个数存入y中即可#include #include #include #include #include #include #include #incl原创 2014-08-07 23:42:34 · 2088 阅读 · 0 评论 -
冒泡排序(优化版)的比较次数和交换数字次数 逆序数+树状数组
题目链接:https://www.contesthunter.org/contest/%E5%85%83%E6%97%A6%E6%AC%A2%E4%B9%90%E8%B5%9B/%E8%BE%9B%E5%B7%B4%E6%9D%A5%E6%8E%92%E5%BA%8F 思路:要求冒泡排序优化以后的趟数和交换次数交换次数等于逆序数因为冒泡排序是临对换排序, 临对换一次减少一个原创 2013-12-29 23:13:05 · 5241 阅读 · 0 评论 -
HDU 4777 树状数组求区间内 与该区间都互质的数个数
题意:给定n个数的序列m个询问,问该区间内,与所有区间内数互质的数有多少个 #include#include#include#include#include#define N 200005using namespace std;vectorprime[N];//prime[i] 是i的所有因子(不包括1)vectoredge[N];struct原创 2014-01-06 19:07:50 · 2288 阅读 · 0 评论 -
UVa 12086 Potentiometers 树状数组裸题 单点更新 区间查询
题意:单点更新,区间查询树状数组裸题:#include #include #include #include #include #include using namespace std;#define ll int#define N 200010int tree[N], maxn;int lowbit(int x){return x&(-x);}int sum(in原创 2014-03-28 20:09:59 · 1634 阅读 · 0 评论 -
Codeforces 374D Inna and Sequence 二分+树状数组
题目链接:点击打开链接给定n个操作,m长的序列a下面n个数if(co>=0)则向字符串添加一个co (开始是空字符串)else 删除字符串中有a的下标的字符直接在序列上搞,简单模拟#include#include#include#include#include#include#include#include#include#includeusing na原创 2014-06-25 11:15:55 · 1947 阅读 · 0 评论 -
Codeforces 12D Ball 树状数组模拟3个元素的排序
题目链接:点击打开链接#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;#define N 500005#define ll intll n;ll c[N], maxn;inline ll原创 2014-06-27 00:08:47 · 1830 阅读 · 0 评论 -
codeforce 369E 离线树状数组+左端点排序右端点维护 一维下 求点集覆盖线段数量
题意:在一维的x轴上给定n个线段, m个询问每个询问 cut个点, 问该点集覆盖的线段数量 思路:ans[i] 表示 第 i 个询问的答案,设 ans[i] = n, 再减去 不在点集中的线段 对于所有线段[ l, r ] ,按线段左端点 l 递减排序,(相同时 r 大则大) 排序后:对于线段 i , j ( i【1】 i.l >= j.l (排序的第原创 2013-12-12 00:46:47 · 2074 阅读 · 0 评论 -
HDU 4836 The Query on the Tree lca || 欧拉序列 || 动态树
lca的做法还是很明显的,简单粗暴,不过不是正解,如果树是长链就会跪,直接变成O(n)、、最后跑的也挺快,出题人还是挺阳光的。。#include #include #include #include #include #include #include #include #include #include #include #include #inclu原创 2014-05-31 20:45:35 · 2066 阅读 · 0 评论 -
Codeforces 216D Spider's Web 树状数组+模拟
题目链接:http://codeforces.com/problemset/problem/216/D题意:对于一个梯形区域,如果梯形左边的点数!=梯形右边的点数,那么这个梯形为红色,否则为绿色,问:给定的蜘蛛网中有多少个红色。2个树状数组维护2个线段。然后暴力模拟一下,因为点数很多但需要用到的线段树只有3条,所以类似滚动数组的思想优化内存。#include#includ原创 2014-06-21 18:21:54 · 1467 阅读 · 0 评论 -
HDU 4911 Inversion 树状数组求逆序数对
显然每次交换都能减少1所以求出逆序数对数,然后-=k就好了。。。_(:зゝ∠)_ #include#include#include#include#include#include#includeusing namespace std;#define N 100005#define ll long longll c[N+100000], maxn; inlin原创 2014-08-05 17:29:52 · 1245 阅读 · 0 评论 -
树状数组的改段求段详解
以下是对于如何利用树状数组进行区间修改和区间查询的简介可以代替不需要lazy tag的线段树,且代码量和常数较小首先你需要学会树状数组,如果不会的话以下先讲解黑匣子使用树状数组的姿势首先定义一个数组 int c[N]; 并清空 memset(c, 0, sizeof c);1、单点修改 : c[x] += y; 对应的函数是 change(x, y);2、求前缀和 : 对应的原创 2015-07-14 13:46:50 · 2365 阅读 · 0 评论