E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
——树状数组
hdu 1556 Color the ball
题目链接:hdu 1556 Color the ball 可以使用线段树来做,但是使用
树状数组
会更加简洁,对于第i个点被涂的次数$s$,为$s=\sum_{k=1}^{i}x_k$,因此对于区间$[a
·
2015-11-13 07:52
color
hdu 1166 敌兵布阵
题目链接:hdu 1166 敌兵布阵 标准的
树状数组
模板题,需要注意的是
树状数组
的初始节点的编号为1。
·
2015-11-13 07:50
HDU
HDU 2836 Traversal 简单DP +
树状数组
题意:给你一个序列,问相邻两数高度差绝对值小于等于H的子序列有多少个。 dp[i]表示以i为结尾的子序列有多少,易知状态转移方程为:dp[i] = sum( dp[j] ) + 1;( abs( height[i] - height[j] ) <= H ) 由abs( height[i] - height[j] ) <= H 可得 height[i] - H <=
·
2015-11-13 07:31
树状数组
HDU 4358 Boring counting
树状数组
+思路
研究了整整一天orz……直接上官方题解神思路 1 #include <cstdio> 2 #include <cstring> 3 #include <cstdlib> 4 #include <vector> 5 #include <algorithm> 6 7 using
·
2015-11-13 07:29
count
Cinema Cashier (
树状数组
)
题目大意: n波人去k*k的电影院看电影。 要尽量往中间坐,往前坐。 直接枚举,贪心,能坐就坐,坐在离中心近期的地方。 #include <cstdio> #include <iostream> #include <cstring> #include <algorithm> #define maxn 1000005
·
2015-11-13 06:04
codeforces
线段树或
树状数组
求逆序数
线段树或
树状数组
求逆序数 求逆序数的方法有分治,归并,本文只介绍线段树或
树状数组
求逆序数的办法,众所周知
·
2015-11-13 06:33
树状数组
poj 1990
题目链接 借鉴cxlove大神的思路 题意:听力v,位置x,2个牛交流声音为max(v1,v2)*(x1-x2),求总的 10000^2 tle 用的
树状数组
做的,排序,2个,小于vi的牛的总数和距离总和
·
2015-11-13 06:34
poj
hdu5124(
树状数组
+离散化)
2.
树状数组
,离散化一下,然后区间更新,单点查询。
·
2015-11-13 06:41
树状数组
URAL1523(dp+
树状数组
)
而要更新dp值,可以用
树状数组
维护,按顺序插入序列值,那么
树状数组
·
2015-11-13 06:39
树状数组
hdu 1166 敌兵布阵(线段树,
树状数组
)
http://acm.hdu.edu.cn/showproblem.php?pid=1166 直接线段树模板 AC代码: #include<iostream> #include<cstdio> #include<cstring> using namespace std; struct node { int l; /
·
2015-11-13 06:26
树状数组
HDU 4000 Fruit Ninja
树状数组
+ 计数
给你N的一个排列,求满足:a[i] < a[k] < a[j] 并且i < j < k的三元组有多少个。 一步转化: 求出所有满足 a[i] < a[k] < a[j] 并且i < j < k的三元组 与 a[i] < a[k] < a[j] 并且i < k < j的三元组 的个数的总和,设high[i
·
2015-11-13 05:01
树状数组
HDU 2852 KiKi's K-Number
树状数组
+ 二分
树状数组
C[i] 记录数值为 i 的数有多少个。 删除时如果Query( a ) - Query( a - 1 ) == 0 则该数不存在。
·
2015-11-13 05:59
number
HDU 4638 Group
树状数组
+ 思路
实际上就是问这个区间编号连续的段的个数,假如一个编号连续的段有(a+b)个人,我把他们分在同一组能得到的分值为(a+b)^2,而把他们分成人数为a和b的两组的话,得到的分值就是a^2+b^2,显然(a+b)^2 > a^2+b^2,所以对于每个区间,尽可能把他们分成尽量少的组。 考虑把这些数从后往前添加,每添加一个数num[i],如果num[i]+1或者num[i]-1有且只有一个已经存在
·
2015-11-13 05:56
group
HDU 4630 No Pain No Game
树状数组
+离线查询
思路参考 这里。 1 #include <cstdio> 2 #include <cstring> 3 #include <cstdlib> 4 #include <algorithm> 5 6 using namespace std; 7 8 const int MAX
·
2015-11-13 05:53
game
树状数组
题目
先提个注意点,由于Lowbit(0) = 0,这会导致x递增的那条路径发生死循环,所有当
树状数组
中可能出现0时,我们都全部加一,这样可以避免0带来的麻烦~~  
·
2015-11-13 05:51
树状数组
SPOJ 227 Ordering the Soldiers 线段树 /
树状数组
题意:设原数组为a[i],pos[i]代表第 i 个位置之前有多少个数比a[i]大,求原数组a[i]。 这个题意是看了别人的题解才明白,我自己没读出来…… 方法:假设我们从左往右放,因为后面的数还有可能影响前面的数的位置,所以在最后一个数放完之前,我们没法确定每个数的位置,所以我们反过来考虑,从右往左放。因为每个数前面比它大的数的个数pos[i]已知,我们可以不必关心这些数的具体数值,从而转化
·
2015-11-13 05:51
order
HDU 4331 Image Recognition
树状数组
+扫描线 官方题解: 本题题目大意在一个01方阵中找出四条边全都是1的正方形的个数,对于正方形内部则没有要求。
·
2015-11-13 05:25
image
POJ 1195 Mobile phones
id=1195 二维
树状数组
的应用 1 #include <cstdio> 2 #include <cstring> 3 #include <cstdlib
·
2015-11-13 05:12
mobile
POJ 3321 Apple Tree
id=3321 刷POJ分类的时候遇到的题,只知道是
树状数组
,但是分支编号不连续,不晓得怎么用
树状数组
求和。
·
2015-11-13 05:11
apple
2008 北京区域赛 ping pong // icpc 4329 ping pong
分析:
树状数组
枚举裁判,分别求到左边位置比该队员的等级高的和等级低的选手数目,当求完之后再从左到右分别删除该项后,求到比他等级高的和等级小的,删除操作只需要modify操作时减掉1即可实现。
·
2015-11-13 05:18
ping
Stars
树状数组
,每颗星星的等级划分为在它下方(坐标轴上)有多少颗星星即为多少等级 分析: 由于先输入的是x坐标,而y坐标已经是按照由小到大输入的,所以可以用
树状数组
来求和的形式
·
2015-11-13 05:13
树状数组
sgu 180 Inversions——
树状数组
求逆序数
树状数组
+离散化。 WA 2:注意数字有可能是一样的!!
·
2015-11-13 05:28
version
树状数组
test
这是按照自己理解写的一个测试代码。。。 简单易懂 #include<stdio.h> #include<string.h> #include<stdlib.h> const int maxn = 10005; int a[ maxn ],c[ maxn ]; int lowbit( int i ){ return i&(-i); }
·
2015-11-13 05:55
test
树状数组
求正序数与逆序数-hdu Minimum Inversion Number
/* 数组初始化为0后 插入1 统计的即为正序数 C(n,2)-正序数为逆序数 又题意求的为最小的逆序数 且变换规则为 a1, a2, ..., an-1, an (where m = 0 - the initial seqence) a2, a3, ..., an, a1 (where m = 1) a3, a4, ..., an, a1, a2 (where m = 2)
·
2015-11-13 05:05
version
poj 1656(二维
树状数组
解法)
题目信息:count black 利用二维
树状数组
: //利用二维
树状数组
#include<iostream> #include<string> #include
·
2015-11-13 04:30
树状数组
hdu 1556 Color the ball(
树状数组
)
转载请注明出处:http://blog.csdn.net/u012860063 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1556 Problem Description N个气球排成一排,从左到右依次编号为1,2,3....N.每次给定2个整数a b(a <= b),lele便为骑上他的“小飞鸽"牌电动车从气球
·
2015-11-13 03:57
color
树状数组
改点求段
#include<stdio.h> int a[20],n; int lowbit(int x) { return x&(-x); } void add(int x,int c) { int i; for(i=x; i<=n; i+=lowbit(i))a[i]+=c; } int sum(int x) { i
·
2015-11-13 03:18
树状数组
树状数组
今天学了一下
树状数组
。 如果给定一个数组,要你求里面所有数的和,一般都会想到累加。
·
2015-11-13 03:16
树状数组
HDU 4417 Super Mario ( 离线
树状数组
)
把数值和查询放在一起从小到大排序,纪录每个数值的位置,当遇到数值时就更新到
树状数组
中,遇到查询就直接查询该区间和。
·
2015-11-13 03:01
super
HDU 1556 Color the ball (
树状数组
区间更新)
水题,练习一下
树状数组
实现区间更新。
·
2015-11-13 03:00
color
HDU 4455 Substrings ( DP好题 )
这个……真心看不出来是个DP,我在
树状数组
的康庄大道上欢快的奔跑了一下午……看了题解才发现错的有多离谱。
·
2015-11-13 03:55
substring
HDU 4262 Juggler
树状数组
树状数组
C[i]记录编号i的球是否还在。 球是环形排列的,特殊处理一下。 对于扔掉一个球之后下一个落在手里的球的编号,二分判定,找顺时针方向第一个有球的位置
·
2015-11-13 03:27
树状数组
HDU 3854 Glorious Array
树状数组
一组数据: 29 10 22 3 1 4 2 5 1 3 40 1 0 1 1 1 1 1 010 410 410 50 710 215 10 21 1 1 1 10 1 0 1 010 310 310 10 40 50 21 答案: 16161616156666 以第一组为例: 2 3 1 4 2 5 1 3 4 以小于K的数为分界,将数列分成几段。 对于每个数字,记录它所在段的左
·
2015-11-13 03:25
array
HDU 3887 Counting Offspring (
树状数组
+人工模拟栈)
对这棵树DFS遍历一遍,同一节点入栈和出栈之间访问的节点就是这个节点的子树。 因此节点入栈时求一次 小于 i 的节点个数 和,出栈时求一次 小于 i 的节点个数 和,两次之差就是答案。 PS.这题直接DFS会爆栈,可以重新设置栈的大小 #pragma comment(linker,"/STACK:100000000,100000000") 也可以
·
2015-11-13 03:24
spring
树状数组
求区间和的一些常见模型
原文地址:http://www.cppblog.com/MatoNo1/archive/2011/03/19/142226.html
树状数组
在区间求和问题上有大用,其三种复杂度都比线段树要低很多……
·
2015-11-13 03:23
树状数组
HDU 3874 Necklace
树状数组
题意:求区间内不同的数的和 离线处理,按查询右端点从小到大排序,从左往右扫一遍。 记录每个数出现的上一个位置,如果该数之前没有出现过,就加上,否则就在上一个位置减去。 #include <cstdio> #include <cstring> #include <cstdlib> #include <algorith
·
2015-11-13 03:22
树状数组
ZOJ 3724 Delivery
树状数组
好题
虽然看起来是求最短路,但因为条件的限制,可以转化为区间求最小值。 对于一条small path [a, b],假设它的长度是len,它对区间[a, b]的影响就是:len-( sum[b]-sum[a-1] );(使区间[a,b]的原有长度变长或者变短,变长没有意义,所以我们只考虑变短的情况),因为只能选择一条small path,所以对于每个查询[u, v],就是要选择在区间[u, v]内,让
·
2015-11-13 03:21
live
pku2823 Sliding Window
离散化+
树状数组
找第k小元素 SBT又超时了,真搞不明白..
·
2015-11-13 03:45
window
pku2155 Matrix
这题的要求和
树状数组
的使用方法恰好相反,改变的是一个区间,查询的反而是一个点。我们先看一维的情况。
·
2015-11-13 03:38
Matrix
pku3321 Apple Tree
思路: 对结点重编号,使得每棵子树内的结点的编号连续,便可将问题转化为
树状数组
求区间和, 用后序遍历对整棵树进行重编号能满足要求。
·
2015-11-13 03:37
apple
pku2299 Ultra-QuickSort
题目意思是求一个序列的逆序数,朴素的做法时间复杂度是O(n^2),其中 n < 500,000 ,结果不用说肯定是超时的;于是思路转向了O(nlogn)的算法,换言之离不开二分、树型结构等方法 这里用到的是杨挺的PDF《
树状数组
和线段树
·
2015-11-13 03:36
Quicksort
HOJ 1016 Joseph's problem I
树状数组
求第K大
HOJ 1016 Joseph's problem I My Tags ( Edit) Source : Unknown Time limit : 10 sec Memory limit : 32 M Submitted : 1484
·
2015-11-13 03:23
树状数组
hoj 1640 Mobile phones //poj 1195 Mobile phones 二维
树状数组
/* (x1,y2) ____________ (x2,y2) |  
·
2015-11-13 03:13
mobile
HOJ 1867 经理的烦恼
树状数组
/* 题目: 给出n个商店,每个商店有初始化的商品数量,现在有两种指令: 0 x y 连锁店x的商品数量变化值为y,y > 0商品数量增加, y < 0减少 1 i j 输出编号在[i,j]区间内的连锁店中商品数量为素数的有多少家 当指令为1时,求给出 i到j的商品数量为素
·
2015-11-13 03:11
树状数组
spoj 227 Ordering the Soldiers——
树状数组
有n个点,标号1到n,给定数组b[i]表示i前面比a[i]小的点的个数,求a[]数组。 我们倒着扫b数组,将符合条件的最大的数插入a数组相应的位置,就得解了。但是朴素查找需要很多时间,就需要用数状数组了。维护一个c数组,sum(i)表示现在有几个数字不大于i,因为sum(i)是有序的,所以我们每次查找的时候就用二分查找就行了,在找到这个点以后,就从c数组中删去。总的复杂度为O(n * lo
·
2015-11-13 03:09
order
poj 2155 Matrix——
树状数组
理解了很久。。 首先分析一维的情况:首先对于每个数A定义集合up(A)表示{A, A+lowestbit(A), A+lowestbit(A)+lowestbit(A+lowestbit(A))...} 定义集合down(A)表示{A, A-lowestbit(A), A-lowestbit(A)-lowestbit(A-lowestbit(A)) ... , 0}。可以发现对于任何A<B
·
2015-11-13 03:08
Matrix
poj 1990 MooFest——
树状数组
大意:很多牛站在x轴上,每个牛有一个v值;两个牛a,b交谈需要的花费为距离 * max(v(a), v(b)),求所有牛的花费和 做法:先把牛按v值排序,再做两个
树状数组
c1,c2,c1记录当前比牛
·
2015-11-13 03:07
树状数组
HDU 1394 Minimum Inversion Number
pid=1394 求最小逆序数,逆序数的
树状数组
求法昨天学会了,今天这题开始用个无脑O(n*n*log(n))的方法,果断超时。
·
2015-11-13 02:19
version
HDU 2689 Sort it
pid=2689
树状数组
求逆序数,原来一直没搞明白,今天看了一遍文章讲的很清楚,下面把有关内容粘过来: 对于小数据,可以直接插入
树状数组
,对于大数据,则需要离散化,所谓离散化,就是将100 200
·
2015-11-13 02:18
sort
hdu 4638
树状数组
思路:将查询区间按右节点的升序排列,然后插入第i个数的时候,若nun[i]+1已经插入,那么就update(pre[num[i]+1],-1);pre[]表示的是该数的位置。同样若 num[i]-1存在就update(pre[num[i]-1],-1);因为他么与num[i]属于一组,故只需一个存在就行。当查询的右边界r等于i时,只需对其左边界求和就行,Sum(qt[j].l)。 #incl
·
2015-11-13 02:38
树状数组
上一页
73
74
75
76
77
78
79
80
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他