傳送門
其實這道題的標答應該是樹狀陣列或者線段樹吧,,,如果我沒記錯的話曾經是做過類似題目的,,,
然而,,然而,,
好吧開始正題,這道題目我選擇的是莫隊演算法,引用一下某大犇的話
暴力出奇蹟,對拍保平安先來討論一下莫隊演算法的適用條件:
莫隊演算法的核心思想其實就是通過調整暴力的順序來優雅的暴力,首先把所有詢問按照左端點排序,對n進行分塊,將詢問塊按照l放入塊中,然後對於每塊按照右端點進行排序,之後暴力掃瞄,得解
資料資料2
最後%%%%%%mt大牛
#include
#include
#include
#include
#include
const
int maxn = 50000 + 100;
const
int maxm = 200000 + 200;
struct task;
task p[maxm];
int ans[maxm];
int sum[1001000];
int tl, tr, tres;
int a[maxn];
int n, m;
int blocksize;
int blocknum;
bool cmp1(task aa, task bb)
bool cmp2(task aa, task bb)
int main ()
std :: sort(p + 1, p + m + 1, cmp1);
blocksize = (int)sqrt(n) + 1;
blocknum = n / blocksize;
int b = 1;
int j;
for (int i = 1; i < blocknum; i++)
std :: sort(&p[b], &p[m + 1], cmp2);
tl = 1, tr = 0, tres = 0;
for (int i = 1; i <= m; i++)
} else
if (p[i].l > tl)
}tl = p[i].l;
if (p[i].r > tr)
} else
if (p[i].r < tr)
}tr = p[i].r;
ans[p[i].num] = tres;
}for (int i = 1; i <= m; i++) printf("
%d\n
", ans[i]);
return
0;}
洛谷 1972 莫隊
洛谷 1972 莫隊演算法 傳送門其實這道題的標答應該是樹狀陣列或者線段樹吧,如果我沒記錯的話曾經是做過類似題目的,然而,然而,好吧開始正題,這道題目我選擇的是莫隊演算法,引用一下某大犇的話 暴力出奇蹟,對拍保平安 先來討論一下莫隊演算法的適用條件 莫隊演算法的核心思想其實就是通過調整暴力的順序來優...
洛谷P1972(莫隊演算法)
hh 有一串由各種漂亮的貝殼組成的項鍊。hh 相信不同的貝殼會帶來好運,所以每次散步完後,他都會隨意取出一段貝殼,思考它們所表達的含義。hh 不斷地收集新的貝殼,因此,他的項鍊變得越來越長。有一天,他突然提出了乙個問題 某一段貝殼中,包含了多少種不同的貝殼?這個問題很難回答 因為項鍊實在是太長了。於...
洛谷小B的詢問(莫隊)
p2709 小b的詢問 題目描述 小b有乙個序列,包含n個1 k之間的整數。他一共有m個詢問,每個詢問給定乙個區間 l r 求sigma c i 2 的值,其中i的值從1到k,其中c i 表示數字i在 l r 中的重複次數。小b請你幫助他回答詢問。輸入輸出格式 輸入格式 第一行,三個整數n m k。...