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

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

UVA12299 - RMQ with Shifts(線段樹)

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

UVA12299 - RMQ with Shifts(線段樹)

題目鏈接

題目大意:要求你查詢某一段的最小值,但是還有一個shift操作,將(a0, a1, a2, a3..ak)這個K個位置的數(shù)字互相對掉,例如a0位置的值變成a1,a1位置的值變成a2...ak位置的值變成a0.

解題思路:因為shift后面的操作數(shù)最多30個,所以可以用線段樹單點修改。復(fù)雜度n*logn。用sscanf函數(shù)挺耗時的,還是自己寫處理函數(shù)。

代碼:

#include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int N = 1e5 + 5; const int M = 35; const int INF = 0x3f3f3f3f; int n, q; int v[4 * N]; int A[N]; int s[M], num[M]; int Query (int o, int l, int r, int ql, int qr) { int m = l + (r - l)/ 2; int ans = INF; if (ql <= l && r <= qr) return v[o]; if (ql <= m) ans = min (ans, Query (2 * o, l, m, ql, qr)); if (qr > m) ans = min (ans, Query (2 * o + 1, m + 1, r, ql, qr)); return ans; } void Update (int o, int l, int r, int p, int val) { int m = l + (r - l) / 2; if (l == r) v[o] = val; else { if (p <= m) Update (2 * o, l, m, p, val); else Update (2 * o + 1, m + 1, r, p, val); v[o] = min (v[2 * o] , v[2 * o + 1]); } } int get_number (char* str) { int dex = 0; int len = strlen (str); s[dex] = 0; bool flag = 0; for (int i = 0; i < len; i++) { if (str[i] >= '0' && str[i] <= '9') { s[dex] = s[dex] * 10 + str[i] - '0'; flag = 1; } else if (flag) s[++dex] = 0; } return dex; } void solve () { char str[N]; int x, y; while (q--) { scanf ("%s", str); int dex = get_number(str); if (str[0] == 'q') { //memcpy (str, str + 6, sizeof (str)); //sscanf (str, "%d,%d", &x, &y); printf ("%d ", Query (1, 1, n, s[0], s[1])); } else { /* memcpy (str, str + 6, sizeof (str)); sscanf (str, "%d%s", &s[dex], str); num[dex++] = A[s[dex]]; while (sscanf (str, ",%d%s", &s[dex], str)) { num[dex++] = A[s[dex]]; }*/ for (int i = 0; i < dex; i++) num[i] = A[s[i]]; for (int i = 0; i < dex; i++) { if (i + 1 < dex) A[s[i]] = num[i + 1]; else A[s[i]] = num[0]; Update (1, 1, n, s[i], A[s[i]]); } } } } int main () { while (scanf ("%d%d", &n, &q) != EOF) { memset (v, 0, sizeof (v)); for (int i = 1; i <= n; i++) { scanf ("%d", &A[i]); Update (1, 1, n, i, A[i]); } solve(); } return 0; }
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 欧美日韩免费在线观看 | 高清二区| 国产小视频在线观看 | 日韩成人影片 | 精品久久久久久久 | 国产三区四区 | 在线观看的av | 亚洲国产精品一区二区第一页 | 日韩一区二区三区电影在线观看 | 香蕉久操 | 中文字幕在线免费视频 | 日韩欧美在线一区二区三区 | 日韩中文字幕在线播放 | 久久6这里只有精品 | 污污的视频网站 | 久久亚洲愉拍国产自367391 | 国产麻豆一区二区三区在线观看 | 99久久久无码国产精品 | 免费一级淫片aaa片毛片a级 | 成人福利免费在线观看 | 国产欧美日韩在线 | 黄色一级视频 | 久久视频精品 | 538国产精品一区二区免费视频 | 久久精品在线观看 | 操人视频网站 | 黄色一级毛片免费看 | 亚洲www啪成人一区二区麻豆 | 欧美精品一区在线发布 | 一区二区三区高清不卡 | 亚洲成人首页 | 涩涩视频 | 国产精品久久久久久久免费大片 | 99在线视频免费观看 | 日韩写真福利视频在线 | 日本久久一区二区 | 国产精品videossex | 国产精品一区二区免费 | 亚洲精品二区三区 | 干干干操操操 | 亚洲小少妇裸体bbw 亚洲免费成人 |