zoukankan      html  css  js  c++  java
  • RMQ(1)暴力O(n*n)

    http://codeforces.com/contest/620/problem/F

    这题给的时限是10S,且数据量不大,可以O(n*(n+m))大概2e9   过。。。

    **O(n3)优化到O(n2)用到了dp预处理

     1 #include<stdio.h>
     2 #include<algorithm>
     3 #include<string.h>
     4 #include<map>
     5 #include<queue>
     6 #include<set>
     7 #include<vector> 
     8 #define MAXN 1000005 
     9 using namespace std;
    10 typedef long long ll;
    11 int a[100005];
    12 struct Edg{
    13     int l,r;
    14     int num,v;
    15 }e[10005];
    16 int b[100005],xor1[1000005];
    17 int main()
    18 {    int n,m;
    19     
    20     scanf("%d%d",&n,&m);
    21     for(int i=1;i<=n;i++)
    22     {
    23         scanf("%d",&a[i]);
    24     }
    25     xor1[0]=0;
    26     for(int i=1;i<=1000000;i++)
    27     {
    28         xor1[i]=xor1[i-1]^i;
    29     }
    30     
    31     for(int i=1;i<=m;i++)
    32     {
    33         scanf("%d%d",&e[i].l,&e[i].r);
    34         e[i].num=i,e[i].v=0;
    35     }
    36 
    37     int res;
    38     for(int i=1;i<=n;i++)
    39     {
    40         for(int j=i;j<=n;j++)
    41         {
    42             res=xor1[a[i]]^xor1[a[j]]^min(a[i],a[j]);
    43             if(j==i) b[j]=res;
    44             else b[j]=max(res,b[j-1]);
    45         }
    46         for(int k=1;k<=m;k++)
    47         {    if(e[k].l<=i&&i<=e[k].r)
    48             {
    49                 e[k].v=max(e[k].v,b[e[k].r]);
    50             }
    51             
    52         }
    53     }
    54     for(int k=1;k<=m;k++)
    55     {
    56         printf("%d
    ",e[k].v);
    57     }
    58     return 0;
    59 } 
  • 相关阅读:
    C# Arrays
    C# 类 (12)
    C# 类 (11)
    C# 类 (10)
    常用的HDFS操作
    Java StringTokenizer 类使用方法
    常用HBase操作
    常用Linux命令
    彻底关闭Windows10的更新
    如何将百度坐标转换为国家2000(或WGS84)坐标系?
  • 原文地址:https://www.cnblogs.com/lnu161403214/p/8605250.html
Copyright © 2011-2022 走看看