
树状数组
morejarphone
这个作者很懒,什么都没留下…
展开
-
HDU5122(树状数组)
水水的树状数组,求冒泡排序以后所有需要冒泡的数的个数。#include #include #include #include #include #include #include using namespace std;#define maxn 1111111#define maxm 121111#define INF 1000000000struct node {原创 2015-10-07 19:19:11 · 327 阅读 · 0 评论 -
codeforces 650D (树状数组)
题目链接:点击这里题意:动态LIS,改变一个值求LIS。先把询问离线下来按照改变的位置排序,把所有的数字离散化。首先先用树状数组求出每一位为结尾的最长上升前缀f[i]和每一位开始的最长上升后缀g[i],然后考虑每一个数字改变后的LIS情况,分成两种讨论:LIS不包含这个数。这种情况比较简单,考虑是不是每一个LIS都含有这个数字即可,也即对于所有的LIS,某一位必须是这个数。所以直接统计每一个数字在原创 2016-12-02 00:03:51 · 535 阅读 · 0 评论 -
Kattis peaktram (树状数组 DP)
题目链接:点击这里题意:给出n个物体的高度以及将他们高度改变1单位的花费,一个观测点从最左端从0往上走,一直平视. 问至少能观测到k个物体的最小花费.因为高度比较大,所以需要将高度离散化,那么需要离散化哪些高度呢?容易发现对于每一个建筑,只要把它+-70范围内的高度离散化就好了,这样最多就是70*140种高度.然后用dp[i][j][k]dp[i][j][k]表示到i物体,最大高度是j,一共看到k个原创 2016-11-17 20:06:08 · 666 阅读 · 2 评论 -
HDU 5517 (二维树状数组)
题目链接:点击这里题意:给出一个pair(a,b)集合A,triple(c,d,e)集合B,然后如果b和e相等可以把新的triple(a,c,d)扔到集合C.求C中的(a,b,c)个数使得C中不存在(u,v,e)满足{(a,b,c)≠(u,v,e),a≤u,b≤v,c≤e}\left\{ (a,b,c)\neq (u,v,e) ,a \leq u,b \leq v, c \leq e \right原创 2016-11-09 15:30:27 · 334 阅读 · 0 评论 -
HDU 4604 (树状数组)
题目链接:点击这里题意:给出一个序列,从头到尾依次扔进一个双端队列或者直接不要,双端队列可以在任意时刻从头或者尾弹出元素。最大化最后的双端队列size。求出每个下标开头的最长递增序列和最长递减序列,然后扫一遍用树状数组维护即可。#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>#include <ve原创 2016-10-26 21:09:30 · 248 阅读 · 0 评论 -
SPOJ DQUUERY (在线主席树 | 离线树状数组)
DQUERY - D-query#sorting #treeEnglishVietnameseGiven a sequence of n numbers a1, a2, ..., an and a number of d-queries. A d-query is a pair (i, j) (1 ≤ i ≤ j ≤ n). For原创 2016-06-04 00:02:35 · 558 阅读 · 0 评论 -
HDU 5618 (CDQ分治 树状数组)
题目链接:点击这里题意:三维偏序,每个点求出三个坐标都小于等于他的点的个数。第三维排序后cdq分治,统计前一半对后一半的影响的时候按照第一位排序第二维树状数组维护。#include <cstdio>#include <cstring>#include <algorithm>#include <iostream>#include <cmath>#include <map>using nam原创 2016-07-21 19:57:37 · 342 阅读 · 0 评论 -
HDU 5775 (树状数组)
题目链接:点击这里题意:给出一个序列,求每一个数字在冒泡排序中出现的最大最小下标差。 从小到大考虑每一个数组,一个数字右边有多少个比他大的数字就是他右移的数量。用树状数组维护下就好了。#include <cstring>#include <cstdio>#include <cmath>#include <algorithm>#include <iostream>using namespa原创 2016-07-29 12:38:27 · 386 阅读 · 0 评论 -
HDU 4911 (树状数组)
题目连接:点击这里题意:给出一个序列, 交换某些相邻的数, 求剩下逆序对最少的个数。显然一次交换可以减少一个逆序对, 所以离散化一下树状数组一下求出最大的逆序对减去交换次数即可。trick是判断交换次数比逆序对大的情况。#include <bits/stdc++.h>using namespace std;#define maxn 100005int n, k;map <int, int> g原创 2016-07-07 22:50:44 · 404 阅读 · 0 评论 -
HDU 5324 (CDQ分治 树状数组)
题目链接:点击这里题意:三维偏序LIS的最小字典序答案。分治的时候逆着做就可以了。#include <cstdio>#include <cstring>#include <algorithm>#include <iostream>#include <cmath>using namespace std;#define maxn 100005#define mod (1LL<<30)#d原创 2016-07-22 16:41:15 · 542 阅读 · 0 评论 -
HDU 5714 (离散化 树状数组)
#include #include #include #include #include #include #include using namespace std;#define maxn 21111int a[maxn][3], b[maxn][3];int cnt1, cnt2;int c[maxn], x[maxn], Max[maxn];int n;int c原创 2016-05-30 16:35:14 · 412 阅读 · 0 评论 -
HDU 5372 (树状数组 离散化)
Segment GameTime Limit: 3000/1500 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 1688 Accepted Submission(s): 523Problem DescriptionLillian is a c原创 2016-05-24 15:06:29 · 454 阅读 · 0 评论 -
HDU 2492 (树状数组)
题意:求出数列递增或者递减的三元组个数。用树状数组维护每个数左边和右边有几个数比自己大/小即可。原创 2016-04-16 02:24:25 · 312 阅读 · 0 评论 -
BZOJ 3289 (莫队算法+树状数组)
3289: Mato的文件管理Time Limit: 40 Sec Memory Limit: 128 MBSubmit: 1671 Solved: 732[Submit][Status][Discuss]DescriptionMato同学从各路神犇以各种方式(你们懂的)收集了许多资料,这些资料一共有n份,每份有一个大小和一个编号。为了防止他人偷拷,这些资料都是加密过的原创 2016-04-28 00:18:07 · 379 阅读 · 0 评论 -
HDU 5654 (树状数组 离散化)
xiaoxin and his watermelon candyTime Limit: 4000/4000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 243 Accepted Submission(s): 64Problem Description原创 2016-03-28 22:20:24 · 472 阅读 · 0 评论 -
codeforces 599C (树状数组)
题意是给你n个城堡,最多能把他们分成几个连续的区间使得每个区间按照高度排序完以后整体高度也是升序用某种数据结构维护一下去前缀和就行了#include using namespace std;#define maxn 111111int c[maxn];struct node { int num, pos; bool operator < (node a) cons原创 2015-11-25 00:05:50 · 425 阅读 · 0 评论 -
HDU4630(树状数组,离线)
题意是给你一个1-n的排列,给q个询问,求每个询问区间里面的最大gcd。先预处理每一个数的因数。然后按照询问的右区间排序,记录到当前询问为止的最左边界,还有某个因子的最右,次右位置,每次这个因子的位置能更新时都用树状数组维护下。#include using namespace std;#define maxn 51111vector fac[maxn]; //每个数的因子int原创 2015-10-28 18:14:29 · 791 阅读 · 0 评论 -
UESTC OJ1217(树状数组)
南阳CCPC的C题。题意是找n个数字的严格上升的长度为m的子串,答案模一个数。用树状数组优化到n*n*lgn就行了,需要注意的是如果相同的数字,我们需要使前面的不影响后面的,也就是在处理相同数字的时候需要优先处理后面的数字,那么我们在排序时当数值一样是需要把位置大的放到前面。#include using namespace std;#define maxn 1111#define m原创 2015-10-26 21:27:08 · 715 阅读 · 0 评论 -
codeforces 785E (树状数组套平衡树)
题目链接:点击这里题意:动态逆序对问题。一个[1,2,3…n][1,2,3\dots n]的数组,每次操作是交换两个元素,输出交换后的逆序对数。需要计算的是交换的两个数,在它们中间的数中分别有多少数比他们大(小)。利用树状数组的思想,把下标为i的树用第i,i+lowbit(i),i+lowbit(i)+lowbit(i+lowbit(i))...i,i+lowbit(i),i+lowbit(i)+l原创 2017-03-20 15:25:51 · 1091 阅读 · 0 评论