四川游戏seo整站优化,企业文化建设的内容有哪些,西部数码网站管理助手 ftp,网站建设介绍ppt模板线段树#xff0c;记录next[i]下一部与当前电影一样的位置#xff0c;然后枚举区间左端点i#xff0c;询问线段树最大值后删除i到next[i-1]这段区间的观影值#xff0c;且增加next[i]到next[next[i]]-1这段区间的观影值。 代码#xff0c;跑的有点慢 1 #includecstdio… 线段树记录next[i]下一部与当前电影一样的位置然后枚举区间左端点i询问线段树最大值后删除i到next[i-1]这段区间的观影值且增加next[i]到next[next[i]]-1这段区间的观影值。 代码跑的有点慢 1 #includecstdio2 #includealgorithm3 using namespace std;4 const int N 5001010;5 const int M 2000010;6 int pos[M],a[M],b[M];7 int n,m,i,next[M];8 long long ans,s[N],v[N];9 void clean(int x)
10 {
11 if (v[x])
12 {
13 s[x]v[x];
14 v[2*x]v[x];
15 v[2*x1]v[x];
16 v[x]0;
17 }
18 }
19 void change(int x,int l,int r,int a,int b,int c)
20 {
21 clean(x);
22 if ((al)(rb))
23 {
24 v[x]c;
25 return;
26 }
27 int m(lr)1;
28 if (am) change(2*x,l,m,a,b,c);
29 if (mb) change(2*x1,m,r,a,b,c);
30 clean(2*x);clean(2*x1);
31 s[x]max(s[2*x],s[2*x1]);
32 }
33 int main()
34 {
35 scanf(%d%d,n,m);
36 for (i1;in;i)
37 scanf(%d,a[i]);
38 for (i1;im;i)
39 scanf(%d,b[i]);
40 for (i1;in;i)
41 {
42 if (pos[a[i]]) next[pos[a[i]]]i;
43 pos[a[i]]i;
44 }
45 for (i1;in;i) if (next[i]0) next[i]n1;
46
47 for (i1;im;i) pos[i]0;
48 for (i1;in;i)
49 {
50 if (pos[a[i]]0) change(1,0,n,i-1,next[i]-1,b[a[i]]);
51 pos[a[i]]1;
52 }
53
54 for (i1;in;i)
55 {
56 clean(1);ansmax(ans,s[1]);
57 change(1,0,n,i-1,next[i]-1,-b[a[i]]);
58 if (next[i]!n1)
59 change(1,0,n,next[i]-1,next[next[i]]-1,b[a[next[i]]]);
60 }
61 printf(%lld\n,ans);
62 } 转载于:https://www.cnblogs.com/fzmh/p/5467221.html