【题目链接】
看到数据范围以为是O(n)做法,再看看status似乎带了个log?然后去搜题解,没想到是线段树= =。
题解:
设pre[i]表示与i这个位置上的数相等的前一个数的下标。
用线段树维护答案。
枚举右端点,每次加入一个数,那么pre[i] + 1到i这段位置的答案加上这个数的权值,pre[pre[i]] + 1到pre[i]这段位置的答案减去这个数的权值,然...
分类:
其他好文 时间:
2016-05-12 22:10:19
阅读次数:
122
从左到右枚举左端点,用线段树维护每个右端点的愉♂悦值#include #include #include #include #include #include #define ll long long#define N 1000006using namespace std;inline int re...
分类:
其他好文 时间:
2016-01-21 13:51:15
阅读次数:
151
1 #include 2 #include 3 using namespace std; 4 int f[1000010], w[1000010] , next[1000010], sign[1000010]; 5 long long tree[4000040],add[4000040], v...
分类:
其他好文 时间:
2015-07-04 06:15:31
阅读次数:
138
经典题,记录每个位置对应数下次出现的位置next[i]每个位置维护当前左端点下到这个位置的和随着左端点的右移一位到i+1,对[i+1,next[i]-1] 的影响是-a[i], [next[i],next[next[i]]-1]的影响是a[i]线段树维护,pascal过不去系列 1 var lazy...
分类:
其他好文 时间:
2015-06-20 19:33:21
阅读次数:
109
Description共有m部电影,编号为1~m,第i部电影的好看值为w[i]。在n天之中(从1~n编号)每天会放映一部电影,第i天放映的是第f[i]部。你可以选择l,r(1#include#define LL long longusing namespace std;inline LL read(...
分类:
其他好文 时间:
2014-12-20 20:48:44
阅读次数:
137
题解:http://www.cnblogs.com/zyfzyf/p/4105184.html 1 #include 2 #include 3 #include 4 using namespace std; 5 #define lson rt'9';c=getchar())if(c=='-')f=-...
分类:
其他好文 时间:
2014-12-05 14:05:03
阅读次数:
239
题目大意:有m个点,每个点有个权值,现在有这m个点组成的长度为n的序列,求一个区间,这个区间内只出现一次的点的权值和最大
想了半天的一道题居然被神犇说成是水题……我也是醉了
枚举左端点 对于每个左端点求右端点 这个用线段树维护最大值
考虑每个数对答案的贡献 记录一个数组next表示这个位置上的点下一次出现的位置 那么这个点贡献的作用范围就是[i,next[i]-1] 如果没有next就是[i...
分类:
其他好文 时间:
2014-11-18 16:03:39
阅读次数:
236