日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國(guó)內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁(yè) > 互聯(lián)網(wǎng) > UVA11235 - Frequent values(BMQ)

UVA11235 - Frequent values(BMQ)

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

UVA11235 - Frequent values(BMQ)

題目鏈接

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

解題思路:將這個(gè)序列重新編碼一下,把相同的數(shù)字標(biāo)記成一段,然后用num記錄是哪一段,用cnt記錄一下出現(xiàn)了多少個(gè)相同的。然后查詢的時(shí)候因?yàn)榭赡艹霈F(xiàn)從一段中的某個(gè)部分開始的情況,所以要先將頭和尾處理一下,標(biāo)記每一段的最左端和最右端位置。中間完整的部分用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; }
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 欧美群妇大交群中文字幕 | 久久精品123 | 最新国产精品视频 | 日本一区二区视频 | 久久精品视频在线观看 | 午夜在线免费观看视频 | 97久久精品 | 色免费在线视频 | 免费成人av网| 男人操女人免费视频 | 操操操网| 久久久午夜精品 | 亚洲成av人片在线观看香蕉 | 国产不卡视频在线观看 | 欧美日韩国产一区 | 又黄又免费的网站 | 国产视频在线播放 | 亚洲国产精品久久久久秋霞不卡 | 国产精品99久久久久久动医院 | 国产在线播放一区 | 亚洲天堂影视 | 国产综合婷婷 | 亚洲一二三 | www色噜噜| 国产精品久久久久久久久久久久午夜片 | 欧美日韩中文字幕在线 | 国产精品一区二 | 99精品视频在线观看免费 | 91黄色在线观看 | 国产精品99精品久久免费 | 国产一区二区三区四区五区 | 色呦呦在线观看视频 | 在线中文字幕第一页 | 综合伊人 | 日韩一区二区三区视频在线观看 | 国产精品成人一区二区三区夜夜夜 | 成人在线观看网站 | 精品久久久久久久久久久久包黑料 | 国产精品国产精品国产专区不片 | 日本午夜网| 国产情侣一区二区三区 |