RMQ 需要轉化一下 uva11235

2021-06-20 13:39:28 字數 927 閱讀 1127

思路:因為元素是連續的,所以可以把相同的元素劃分成一段,用value[i]和count[i]分別表示第i段的數值和出現的次數,num[p],left[p],right[p]分別表示p位置所在的段和左右端點的編號,查詢的時候只需要比較right[r]-r+1,l-left[l]+1和第num[l]!+1到num[r]-1段的最大值。rmq陣列維護的是count陣列的最大值。

**如下:

#include#include#includeusing namespace std;

const int maxn=100010;

int n,q,cnt;

int a[maxn],d[maxn][40];

int value[maxn],count[maxn],num[maxn],left1[maxn],right1[maxn];

void process()

num[i]=cnt;

left1[i]=biao;

}count[cnt]=n-left1[biao-1];

x=a[n],right1[n]=n;biao=n;

for(int i=n-1;i>=1;i--)

}void rmq_init()

{ int m=cnt;

for(int i=1;i<=cnt;i++)d[i][0]=count[i];

for(int j=1;(1<>n,n)

{cin>>q;

for(int i=1;i<=n;i++)

cin>>a[i];

process();

rmq_init();

while(q--)

{cin>>l>>r;

if(num[l]==num[r]){cout<

記錄一下需要優化的東西

優化 1,減少dc 2,圖集打包 3,減低模型片面數 三角面 4,使用光照貼圖,烘焙貼圖 使用著色器 高效shader 5,遮擋剔除 6,物件池 7,多細節層次 lod 8,mipmap 9,使用預設 10,壓縮類庫 11,降低解析度 12,關閉垂直同步 13,粒子特效優化 14,優化地形 15,記...

記一下jar class path 需要注意的問題

1.manifest version main class和class path後面跟著乙個英文的冒號,冒號後面必須跟著乙個空格,然後才是版本號 類和classpath。2.class path中的各項應使用空格分隔,不是逗號或分號。3.class path中如果有很多項,寫成一行打包的時候會報錯l...

轉化一下解決問題的思路,彎道超車

遇到乙個數字密碼的問題。使用者點選密碼input框,多次點選會觸發奇怪的定位問題。我的思路是獲取點選事件,然後進行處理。搜尋了半天,什麼onclick,onchange,onfocus,onkeyup.都試了,都不行!氣的都想把電腦砸了!後來想了一下索性不讓使用者去亂點選,而是通過統一的獲取焦點。使...