From 40d649ae44aca4e4f43bfd863bc0c047bb921f7e Mon Sep 17 00:00:00 2001 From: Kirito <1362050620@qq.com> Date: Thu, 11 Aug 2016 10:18:19 +0800 Subject: [PATCH] Create 1068.cpp --- hihoCoder/1068.cpp | 68 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 hihoCoder/1068.cpp diff --git a/hihoCoder/1068.cpp b/hihoCoder/1068.cpp new file mode 100644 index 0000000..192f057 --- /dev/null +++ b/hihoCoder/1068.cpp @@ -0,0 +1,68 @@ +#include +#include +#include + +#include +#include +using namespace std; + +const int MAXN = 1000005; + +int n,ndev; +int a[MAXN]; + +const int MAXDEV = 25; + +int minsum[MAXN][MAXDEV]; + +void RMQ() //预处理->O(nlogn) +{ + for(int j = 1; j <= ndev; ++j) + for(int i = 1; i <= n; ++i) + if(i + (1 << j) - 1 <= n) + { + //maxsum[i][j] = max(maxsum[i][j - 1], maxsum[i + (1 << (j - 1))][j - 1]); + minsum[i][j] = min(minsum[i][j - 1], minsum[i + (1 << (j - 1))][j - 1]); + } +} +int RMQ(int i,int j) +{ + int k=log2( j - i + 1); + //return max(maxsum[i ][ k], maxsum[ j - 2 ^ k + 1][ k]); + return min(minsum[i ][ k], minsum[ j - (1<1) + { + p>>=1; + ndev++; + } + for(int i=1;i<=n;i++) + { + scanf("%d",&a[i]); + } + Init(); + RMQ(); + int t; + scanf("%d",&t); + for(int i=0;i