zoukankan      html  css  js  c++  java
  • BZOJ 4241 历史研究(分块)

    题意

    题解

     1 #include<iostream>
     2 #include<cstring>
     3 #include<cstdio>
     4 #include<cmath>
     5 #include<algorithm>
     6 using namespace std;
     7 const int N=100100;
     8 int n,m,Block,block[N],a[N],b[N],cnt[400][N],top,stack[N],num[N];
     9 long long f[400][N];
    10 int main(){
    11     scanf("%d%d",&n,&m);
    12     Block=sqrt(n);
    13     for(int i=1;i<=n;i++){
    14         scanf("%d",&a[i]);
    15         block[i]=(i-1)/Block+1;
    16         b[i]=a[i];
    17     }
    18     sort(b+1,b+1+n);
    19     int tot=unique(b+1,b+1+n)-b-1;
    20     for(int i=1;i<=n;i++){
    21         a[i]=lower_bound(b+1,b+1+tot,a[i])-b;
    22     }
    23     for(int i=1;i<=block[n];i++){
    24         long long ans=0;
    25         for(int j=lower_bound(block+1,block+1+n,i)-block;j<=n;j++){
    26             cnt[i][a[j]]++;
    27             ans=max(ans,(long long)cnt[i][a[j]]*b[a[j]]);
    28             f[i][j]=ans;
    29         }
    30     }
    31     for(int i=1;i<=m;i++){
    32         top=0;
    33         int x,y;
    34         scanf("%d%d",&x,&y);
    35         long long ans=f[block[x]+1][y];
    36         int tmp=lower_bound(block+1,block+1+n,block[y])-block;
    37         for(int j=tmp;j<=y;j++){
    38             num[a[j]]++;
    39             stack[++top]=a[j];
    40         }
    41         tmp=lower_bound(block+1,block+1+n,block[x]+1)-block;
    42         for(int j=x;j<=tmp-1;j++){
    43             num[a[j]]++;
    44             ans=max(ans,(long long)(cnt[block[x]+1][a[j]]-cnt[block[y]][a[j]]+num[a[j]])*b[a[j]]);
    45             stack[++top]=a[j];
    46         }
    47         printf("%lld
    ",ans);
    48         for(int j=1;j<=top;j++)num[stack[j]]=0;
    49     }
    50     return 0;
    51 }
  • 相关阅读:
    Sqlite EF6注册
    C# 等值锁定
    net 4.0+EF6+Sqlite 使用,安装,打包
    C#调用C++函数
    C# 调用.exe文件
    Java继承
    python多线程与threading模块
    Java对象构造
    python多线程与_thread模块
    Linux文件压缩与打包
  • 原文地址:https://www.cnblogs.com/Xu-daxia/p/9463656.html
Copyright © 2011-2022 走看看