1 #include 2 #define lowbit(x) x&(-x) 3 #define LL long long 4 #define N 200005 5 #define M 1000005 6 #define mod 1000000007LL 7 #define inf 0x7ffffff... ...
分类:
其他好文 时间:
2017-01-14 17:24:32
阅读次数:
271
1901: Zju2112 Dynamic Rankings Description 给定一个含有n个数的序列a[1],a[2],a[3]……a[n],程序必须回答这样的询问:对于给定的i,j,k,在a[i],a[i+1],a[i+2]……a[j]中第k小的数是多少(1≤k≤j-i+1),并且,你可 ...
分类:
其他好文 时间:
2017-01-13 09:01:51
阅读次数:
205
http://acm.hdu.edu.cn/showproblem.php?pid=2227 用dp[i]表示以第i个数为结尾的nondecreasing串有多少个。 那么对于每个a[i] 要去找 <= a[i]的数字那些位置,加上他们的dp值即可。 可以用树状数组维护 #include <cstd ...
分类:
编程语言 时间:
2016-12-08 09:33:52
阅读次数:
228
int lowbit(int t) { return t&(-t); } void add(int x,int y) { for(int i=x;i<=n;i+=lowbit(i)) tree[i]+=y; } int getsum(int x) { int ans=0; for(int i=x;i ...
分类:
编程语言 时间:
2016-12-06 22:49:03
阅读次数:
358
如题。 当遇到单点更新时,树状数组往往比线段树更实用。 算法: 设原数序列为a[i],最大值为h[i](树状数组)。 1。单点更新: 直接更新a[i],然后再更新h[i]。若h[i]的值有可能改变的,则表示区间一定包含i结点。那么就两层lowbit更新所有可能的h。 单点更新时间复杂度O(logn* ...
分类:
编程语言 时间:
2016-11-17 09:57:20
阅读次数:
184
题目链接:hdu_5324_Boring Class 题意: 给出n个二维点对,求LIS长度和编号字典序最小的LIS(x非增,y非减) 题解: dp[i]=max(dp[j]) (i>j,l[i]>=l[j],r[i]<=r[i]) 一看就是三维偏序问题。 如果树套树写的好,空间开的大的话,一样可以 ...
分类:
编程语言 时间:
2016-11-12 18:59:26
阅读次数:
279
题目链接:hdu_5618_Jam's problem again 题意: 给你n个点,每个点有一个坐标(x,y,z),找出有ans个点,3个坐标都比该点小,这个点的level就为ans,然后让你输出所有点的ans. 题解: 对于第一维,直接排序,后面两维的处理可以用线段树套lowbit,但空间用的 ...
分类:
其他好文 时间:
2016-11-10 21:33:57
阅读次数:
248
http://acm.hdu.edu.cn/showproblem.php?pid=5869 题意:给定一个数组,然后给出若干个询问,询问[L, R]中,有多少个子数组的gcd是不同的。 就是[L, R]中不同区间的gcd值,有多少个是不同的。 给个样例 3 37 7 71 21 33 3 数学背景 ...
分类:
编程语言 时间:
2016-11-10 14:18:03
阅读次数:
358
http://acm.xidian.edu.cn/problem.php?id=1181 因为只有一组数据,直接开vector存每一次的状态,把树状数组改一下就可以了。 因为^和+的优先级问题,WA了无数遍!! ...
分类:
编程语言 时间:
2016-11-03 02:09:10
阅读次数:
187