多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區(qū)平臺 聯系我們 | 收藏本站
阿里云優(yōu)惠2
您當前位置:首頁 > 互聯網 > UVA11235 - Frequent values(BMQ)

UVA11235 - Frequent values(BMQ)

來源:程序員人生   發(fā)布時間:2014-10-08 08:00:00 閱讀次數:2269次

UVA11235 - Frequent values(BMQ)

題目鏈接

題目大意:可以一串不遞減的序列,然后給你一個范圍L,R,要求你返回L,R出現最多次的那個值的出現次數。

解題思路:將這個序列重新編碼一下,把相同的數字標記成一段,然后用num記錄是哪一段,用cnt記錄一下出現了多少個相同的。然后查詢的時候因為可能出現從一段中的某個部分開始的情況,所以要先將頭和尾處理一下,標記每一段的最左端和最右端位置。中間完整的部分用BMQ。

#include <cstdio> #include <cstring> #include <vector> #include <map> using namespace std; const int N = 1e5 + 5; const int M = 20; int left[N], right[N]; int A[N]; struct Num { int value, count; Num (const int value = 0, const int count = 0): value(value) , count(count) {} }; vector<Num> v; map<int, int> num; int d[N][M]; int n; void RMQ_init () { int l = v.size(); for (int i = 0; i < l; i++) d[i][0] = v[i].count; for (int j = 1; (1<<j) <= l; j++) for (int i = 0; i + (1<<j) - 1 < l; i++) d[i][j] = max (d[i][j - 1], d[i + (1<<(j - 1))][j - 1]); } int RMQ (int l, int r) { int k = 0; while ((1<<(1 + k)) <= (r - l + 1)) k++; return max (d[l][k], d[r - (1<<k) + 1][k]); } int main () { int q; while (scanf ("%d", &n) && n) { scanf ("%d", &q); v.clear(); num.clear(); for (int i = 0; i < n; i++) { scanf ("%d", &A[i]); if (v.size() && v[v.size() - 1].value == A[i]) v[v.size() - 1].count++; else { num[A[i]] = v.size(); v.push_back(Num(A[i], 1)); left[num[A[i]]] = i; } } for (int i = 0; i < v.size(); i++) right[num[v[i].value]] = left[num[v[i].value]] + v[i].count - 1; RMQ_init(); int l, r; int ans; while (q--) { scanf ("%d%d", &l, &r); l--; r--; if (A[l] != A[r]) { ans = max (right[num[A[l]]] - l + 1, r - left[num[A[r]]] + 1); if (num[A[l]] + 1 <= num[A[r]] - 1) ans = max (ans, RMQ(num[A[l]] + 1, num[A[r]] - 1)); } else ans = r - l + 1; printf ("%d ", ans); } } return 0; }
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 亚洲国产天堂久久综合图区 | 亚洲成人黄色片 | 中文字幕第一页在线 | 国产视频一区在线 | 国产成人综合一区人人 | 欧美精品一区二区三区免费播放 | 国产精品久久久久久五月尺 | 亚色国产 | 亚洲精品一区 | 精品久久成人 | 亚州精品永久观看视频 | 大学生一级毛片高清版 | 久久亚洲成人 | 新天堂网 | 67194在线午夜亚洲 | 欧美精品一区二区三区观 | 欧美一级高清片在线 | xxxx性欧美极品另类 | 美国jizz| 福利在线影院 | h视频网站在线 | 亚洲视频在线观看免费视频 | 中文字幕精品在线 | 日韩久久中文字幕 | 午夜视频免费在线播放 | 亚洲欧美中文字幕专区 | 亚洲线精品久久一区二区三区 | 在线欧洲成人免费视频 | 亚洲在线一区二区三区 | 免费看h | 一级毛片aaaaaa视频免费看 | 亚洲欧洲国产视频 | 亚洲成人天堂网 | 亚洲欧洲一区二区三区久久 | 91人人视频 | 日韩精品无码一区二区三区 | haodiaose在线精品免费视频 | 亚洲高清日韩精品第一区 | 国产叼嘿视频 | 精品久久久久久国产免费了 | 最近2019中文字幕免费看最新 |