HDU3874 莫隊演算法,模板)

2021-09-13 22:21:43 字數 520 閱讀 8873

題意:給定乙個陣列,每次詢問乙個區間[l, r],求區間內所有數字的和,出現多次的數字只加一次

解題思路:莫隊演算法就適用於這種區間問題,且臨近點轉移比較方便的情況。複雜度最大應該也有o(m *sqrt(n)),但總比暴力的o(mn)要好。

#include#include#include#include#define n 50009

#define m 200009

#define ll long long

using namespace std;

struct node

q[m];

ll ans;

int s[n],vis[1000008],be[n],bck;

ll res[m];

bool cmp(node a,node b)

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

printf("%lld\n",res[i]);

} return 0;

}

HDU 3874 Necklace 莫隊演算法

題目 題意 給定乙個陣列,每次詢問乙個區間 l,r 求區間內所有數字的和,出現多次的數字只加一次 思路 莫隊演算法掃一遍即可,注意會爆int。我陣列開小了不少re而是tle,蛋疼。include include include include include include using namesp...

HDU 3874 離線線段樹

統計區間內所有數字和,對於重複出現的只統計一次 線段樹的離線演算法 按結束座標排序,然後掃一遍,遇到重複的,就把之前插入線段樹的給刪掉 include stdio.h include string.h include algorithm using namespace std struct node...

hdu 3874 線段樹 離線查詢

要求乙個區間所有數之和 求和時要去重 離線查詢 先把所有查詢離線 然後按照右端點排序 每次保證加入後乙個數的時候線段樹中沒有和他重複的 如果重複就把前乙個刪掉 這樣由於之前排序過 保證不會漏解 include include include define lson l,mid,rt 1 define...