Luogu:P3865 [テンプレート] STテーブル(普及/改善-、バイナリスタック、STテーブル)

トピック:

ここに画像の説明を挿入

分析:考えてみたところ、以前はこの質問について小さな質問があったようです。当時は乗数か何かのようで、とにかく2の倍数を使っていました。dpもあります。

まあ、同じことがソリューションにも当てはまります。

ここに画像の説明を挿入

残りは最初に試す人によって書かれています。

いいえ、前のものを反転させた後、それは本当に行われました。

前のブログ

私はそれについて少し考えました、なぜjが最初にそして次に私は:

ここに画像の説明を挿入

価値観は確かにこのようなものです。

コード:

#include<bits/stdc++.h>
using namespace std;
int A[100005];
int m,n;
int A1[100005][100];
void f(int x1,int x2)
{
    
    
 int k=0;
 while(1)
 {
    
    
  if((1<<(k+1)) > x2-x1+1 ) break;
  k++;
 }
 cout<<max(A1[x1][k],A1[x2-(1<<k)+1][k])<<endl;
}
int main()
{
    
    
 cin>>m>>n;
 for(int i=1;i<=m;i++) cin>>A[i];
 for(int i=1;i<=m;i++) A1[i][0]=A[i];
 for(int j=1;(1<<j)<=m;j++)
 for(int i=1;i+(1<<j)-1<=m;i++)
 A1[i][j]=max(A1[i][j-1],A1[i+(1<<(j-1))][j-1]);
 for(int i=1;i<=n;i++)
 {
    
    
  int a,b; cin>>a>>b;
  f(a,b);
 }
} 

Tは、タイトルによって与えられた入力が役に立たないからです。

おすすめ

転載: blog.csdn.net/weixin_42721412/article/details/108555694