数据结构-数状数组
lab104_yifan
这个作者很懒,什么都没留下…
展开
-
UVA 1428 - Ping pong(树状数组)
UVA 1428 - Ping pong题目链接题意:给定一些人,从左到右,每个人有一个技能值,现在要举办比赛,必须满足位置从左往右3个人,并且技能值从小到大或从大到小,问有几种举办形式思路:利用树状数组处理出每个位置左边比它小的个数和右边比他小的个数和,那么左边和右边大就也能计算出来,那么比赛场次为左边小*右边大+左边大*右边小。代码:#include原创 2014-07-28 17:30:07 · 1985 阅读 · 0 评论 -
HDU 3874 Necklace(树状数组离线处理)
HDU 3874 Necklace题目链接同HDU3333,链接代码:#include #include #include #include using namespace std;const int N = 50005;const int M = 200005;typedef long long ll;int t, n, a[N];map g原创 2014-10-16 10:53:17 · 688 阅读 · 0 评论 -
HDU 3333 Turing Tree(树状数组离线处理)
HDU 3333 Turing Tree题目链接题意:给定一个数组,每次询问一个区间,求出这个区间不同数字的和思路:树状数组离线处理,把询问按右端点判序,然后用一个map记录下每个数字最右出现的位置,因为一个数字在最右边出现,左边那些数字等于没用了,利用树状数组进行单点修改区间查询即可代码:#include #include #include #inc原创 2014-10-16 10:06:59 · 994 阅读 · 0 评论 -
HDU 5044 Tree(树链剖分)
HDU 5044 Tree题目链接就简单的树链剖分,不过坑要加输入外挂,还要手动扩栈代码:#include #include #include #include using namespace std;const int N = 100005;#pragma comment(linker, "/STACK:1024000000,1024000000"原创 2014-10-02 21:00:04 · 1303 阅读 · 0 评论 -
HDU 4777 Rabbit Kingdom(树状数组)
HDU 4777 Rabbit Kingdom题目链接题意:给定一些序列,每次询问一个区间,求出这个区间和其他数字都互质的数的个数#include #include #include #include using namespace std;const int INF = 0x3f3f3f3f;typedef long long ll;const ll N = 20原创 2014-10-10 11:03:16 · 1083 阅读 · 0 评论 -
HDU 3966 Aragorn's Story(树链剖分)
HDU Aragorn's Story题目链接树抛入门裸题,这题是区间修改单点查询,于是套树状数组就OK了代码:#include #include #include #include using namespace std;const int N = 50005;inline int lowbit(int x) {return x&(-x);}i原创 2014-09-30 12:39:55 · 928 阅读 · 0 评论 -
Light 1348 - Aladdin and the Return Journey(树链剖分)
Light 1348 - Aladdin and the Return Journey题目链接树链剖分基础题,注意一个坑点,就是下标按0开始的话按我的写法是会错的,因为son初值赋成0了,要么改一下son初值,要么把下标都+1代码:#include #include #include #include using namespace std;const原创 2014-10-01 00:05:27 · 1310 阅读 · 0 评论 -
UVA 11423 - Cache Simulator(树状数组)
UVA 11423 - Cache Simulator题目链接题意:题目讲的大概就是几个cash,每次操作可以加入一个或一些数据,如果数据之前有就是hit,命中后的数据就不会消失,如果没有就miss,当容量超过cash容量时,就会把之前最早没命中的一个丢掉,每次START就执行这些命令,计算miss次数并输出思路:由于最多就2^24的数据,所以可以开一个树状数组,每个位置表原创 2014-08-16 20:04:14 · 1710 阅读 · 0 评论 -
UVA 10869 - Brownie Points II(树状数组)
UVA 10869 - Brownie Points II题目链接题意:平面上n个点,两个人,第一个人先选一条经过点的垂直x轴的线,然后另一个人在这条线上穿过的点选一点作垂直该直线的线,然后划分出4个象限,第一个人得到分数为1,3象限,第二个人为二四象限,问第一个个人按最优取法,能得到最小分数的最大值,和这个值下另一个人的得分可能情况思路:树状数组,可以枚举一点,如果能求出原创 2014-08-16 23:26:56 · 1059 阅读 · 0 评论 -
UVA 1406 - A Sequence of Numbers(树状数组)
UVA 1406 - A Sequence of Numbers题目链接题意:给定一些数字,每次操作C x 表示所有数字加上xQ x 表示答案加上与2x进行且操作不为0的个数E 结束,并输出答案思路:树状数组,首先观察,对于每次查询x而言,只有前x位是是有用的,所以可以开16个树状数组,每个数组表示数字对应前x位下的数字,然后就可以搞了,已经现在加过值为sum,原创 2014-08-16 16:42:13 · 1212 阅读 · 0 评论 -
UVA 10909 - Lucky Number(树状数组)
UVA 10909 - Lucky Number题目链接题意:问一个数字能否由两个lucky num构造出来,lucky num根据题目中的定义思路:利用树状数组找前k大的方法可以构造出lucky num的序列,然后每次查找n,就从n / 2开始往下查找即可代码:#include #include #include using namespace st原创 2014-08-24 23:41:20 · 1493 阅读 · 0 评论 -
UVA 11525 - Permutation(树状数组)
UVA 11525 - Permutation题目链接题意:给定一个k个数字,求第n个全排列,由于n很大,输入的方式为∑k1Si∗(K−i)!思路:全排列,很容易看出,前面的si对应的就是数组中第k小的数字,那么问题变成每次找第k小的数字,然后去掉这个数字,这个用树状数组很容易实现代码:#include #include #define lowbit(原创 2014-07-30 17:03:16 · 1217 阅读 · 0 评论 -
UVA 1513 - Movie collection(树状数组)
UVA 1513 - Movie collection题目链接题意:有一些光盘,一开始是n-1叠上去的(1最顶),现在每次抽出一张,要问这一张上面有多少张,然后把抽出来这张放到最顶,输出每次询问思路:树状数组,数组维护每个位置下面有多少张光碟,这样每次拿出一张,就在相应位置-1就可以了,然后在最顶位置上多一个位置+1代码:#include #include原创 2014-07-30 14:29:31 · 1508 阅读 · 0 评论 -
UVA 12086 - Potentiometers(树状数组)
UVA 12086 - Potentiometers题目链接题意:一个序列,两种操作,某个位置值变成x,询问l,r区间的和思路:树状数组搞代码:#include #include #define lowbit(x) (x&(-x))const int N = 200005;int n, bit[N], num[N];void add(int原创 2014-07-29 00:31:42 · 1097 阅读 · 0 评论 -
URAL 1707. Hypnotoad's Secret(树状数组)
URAL 1707. Hypnotoad's Secret题目链接题意:这题设置的恶心不能多说,构造点和矩形,大概就是问每个矩形里面是否包含点思路:树状数组,把点排序,按y轴,在按x轴,在按询问,这样每次遇到一个点就在相应的扫描线上加,遇到查询就询问出左边到这个点位置的,就能预处理出每个点左下角包含的点的个数,然后每个矩形再利用容斥原理去搞一下即可代码:#i原创 2014-10-17 21:29:05 · 1001 阅读 · 0 评论