日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

BEAUTIFUL

發布時間:2023/12/18 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BEAUTIFUL 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

DESCRIPTION:
一個長度為n 的序列,對于每個位置i 的數ai 都有一個優美值,其定義是:找到序列中最
長的一段[l, r],滿足l<i<r,且[l, r] 中位數為ai(我們比較序列中兩個位置的數的大小時,
以數值為第一關鍵字,下標為第二關鍵字比較。這樣的話[l, r] 的長度只有可能是奇數),r - l
+ 1 就是i 的優美值。
接下來有Q 個詢問,每個詢問[l, r] 表示查詢區間[l, r] 內優美值的最大值。
INPUT:
第一行輸入n 接下來n 個整數,代表ai 接下來Q,代表有Q 個區間接下來Q 行,每行
兩個整數 l, r 表示區間的左右端點
OUTPUT:
對于每個區間的詢問,輸出答案
SAMPLE INPUT:
8
16 19 7 8 9 11 20 16
8
3 8
1 4
2 3
1 1
5 5
1 2
2 8
7 8
SAMPLE OUTPUT:
7
3
1
3
5
3
7
3

數據范圍:
30%: N,Q<50
70%:N,Q<2000

100%:N<2000,Q<100000,ai<200
對于所有數據,滿足n 2000, Q <100000,ai <200

#include<cstdio> #include<cstring> #include<iostream> using namespace std; int main() {freopen("beautiful.in","r",stdin);freopen("beautiful.out","w",stdout);static int a[2001],b[8001],v[2001],f[2001][2001];int *l(b+2000),*r(b+6000);int n(0),cnt(0);scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%d",a+i);for(int i=1;i<=n;i++){cnt=0;memset(b,0,sizeof(b));l[0]=r[0]=i;for(int j=i-1;j>0;j--){if(a[j]>a[i])cnt++;else cnt--;l[cnt]=j;}cnt=0;for(int j=i+1;j<=n;j++){if(a[j]>=a[i])cnt++;else cnt--;r[cnt]=j;}v[i]=0;for(int j=-n;j<=n;j++)if(l[j]&&r[-j])v[i]=max(v[i],r[-j]-l[j]+1);} for(int i=1;i<=n;i++)f[i][i]=v[i];for(int i=1;i<=n;i++)for(int j=i+1;j<=n;j++)f[i][j]=max(f[i][j-1],f[j][j]);int q(0);scanf("%d",&q);while(q){q--;int lt(0),rt(0);scanf("%d%d",&lt,&rt);printf("%d\n",f[lt][rt]);}return 0; }

?

轉載于:https://www.cnblogs.com/JebediahKerman/p/6011310.html

總結

以上是生活随笔為你收集整理的BEAUTIFUL的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。