题意:给定n个数。要求必须将当中某个数改为P,求修改后最大的区间和能够为多少。 水题。枚举每一个区间。假设该区间不改动(即改动该区间以外的数),则就为该区间和,若该区间要改动,由于必须改动,所以肯定是把最小的数改动为P能保证该区间最后和最大,所以比較两种方案的较大者。对于每一个区间取出的较大者,再取 ...
分类:
其他好文 时间:
2016-04-13 14:38:59
阅读次数:
129
从左往右枚举右端点,用一棵线段树维护每个左端点的去重后的区间和。 那么对于$a[r]$,需要在$[pre[a[r]]+1,r]$里区间加上$a[r]$。 将线段树可持久化,并维护区间最大值,就可以在线询问形如“给定$r$以及$a,b$”,问$l$在$[a,b]$里$[l,r]$的区间和的最大值的问题 ...
分类:
其他好文 时间:
2016-04-08 06:35:39
阅读次数:
201
由于K很小,所以就直接取出最大的K个值加起来即可
考虑一个(i,l,r)(i,l,r)表示以i开始以[l,r][l,r]中的某个位置结束的区间和的最大值,假设这个位置为pp,然后把这些东西都存起来一起扔到堆中,每次取出区间和最大的一个元素,然后继续向堆中添加新的元素,直接对(i,l,p?1)(i,l,p-1),(i,p+1,r)(i,p+1,r)这两个组合再分别找出最大的区间和再扔到堆中,然后重复...
分类:
其他好文 时间:
2016-04-06 11:30:26
阅读次数:
169
HDU 4027 Can you answer these queries? 题目链接 题意:给定一个数列。两种操作 0 a b 把[a,b]区间内的数字都开根 1 a b 询问区间[a,b]和 思路:注意开根最多开到1或0就不在变化,那么一个数字最多开63次,然后题目保证数列和小于2^63,所以实 ...
分类:
其他好文 时间:
2016-04-04 20:58:34
阅读次数:
182
POJ2566-Bound Found 题目大意:给出一段长度为n的数列,数列中的元素有正有负,求一段连续的区间,使得该区间的和的绝对值最接近给定的值 尺取法一般适用于对一段连续的区间的和进行处理的情况,反复推进区间复杂度一般为O(n) 当区间的元素都正整数时,区间和是单调递增的,通过不断向前推进区 ...
分类:
其他好文 时间:
2016-04-04 09:08:35
阅读次数:
203
求(1,b)区间和(1,d)区间里面gcd(x, y) = k的数的对数(1<=x<=b , 1<= y <= d)。 b和d分别除以k之后的区间里面,只需要求gcd(x, y) = 1就可以了,这样子求出的数的对数不变。 这道题目还要求1-3 和 3-1 这种情况算成一种,因此只需要限制x<y就可 ...
分类:
其他好文 时间:
2016-04-03 17:26:54
阅读次数:
146
题意:求(1,b)区间和(1,d)区间里面gcd(x, y) = k的数的对数(1 #include #include using namespace std; const int N=100000+10; int u[N],prime[N]; bool vis[N]; void init() { ... ...
分类:
其他好文 时间:
2016-04-03 14:40:14
阅读次数:
259
题意:给你若干个区间,询问每个区间包含几个其它区间 分析:区间范围比较大,然后离散化,按右端点排序,每次更新树状数组中的区间左端点,查询区间和 注:(都是套路) #include<cstdio> #include<cstring> #include<queue> #include<cstdlib> ...
分类:
编程语言 时间:
2016-03-27 19:24:53
阅读次数:
155
首先,对于每个询问,我们二分答案 然后对于序列中大于等于中位数的数,我们把它们置为1,小于中位数的数,置为-1 那么如果一个区间和大于等于0,那么就资磁,否则就不滋磁 这个区间和呢,我们可以用主席树维护前缀和 [c,d]上的最大前缀和减去[a-1,b-1]上的最小前缀和,就是所有可用区间的最大区间和
分类:
其他好文 时间:
2016-02-24 22:29:09
阅读次数:
294
无意看到的LeetCode新题,不算太简单,大意是给一个数组,询问多少区间和在某个[L,R]之内。首先做出前缀和,将问题转为数组中多少A[j]-A[i] (j>i)在范围内。 有一种基于归并排序的做法,在每次归并完左右两个子区间后,当前区间两部分分别都已经排序完毕,基于有序这一点,扫描后半段区间,对
分类:
其他好文 时间:
2016-02-02 01:11:56
阅读次数:
474