給你n,m求
。t組資料
。這題常規思路暴力求字首和時間複雜度和空間複雜度都是顯然不夠的,所以,採用莫隊演算法將t個詢問排序,之後將m看做l,n看做r,通過觀察可以發現
所以首先將r加/減到指定行,之後對l進行加/減,設res為答案,即:
r加的時候:
r減的時候:
l加的時候:
l減的時候:
具體見**:
#include
#include
#include
#include
#include
#include
using namespace std;
typedef long long ll;
const int maxn = 100000;
const int pt = 1e9 + 7;
struct nood q[maxn + 5];
ll p[maxn + 5], rp[maxn + 5];
int t;
int b[maxn + 5];
ll qwe(ll x, ll y)
return res;
}bool cmp(nood a, nood b)
void init()
int unit = sqrt(maxn);
for(int i = 1; i <= maxn; i++)b[i] = i / unit + 1;
scanf("%d", &t);
for(int i = 1; i <= t; i++)scanf("%d
%d", &q[i].r, &q[i].l), q[i].id = i;
sort(q + 1, q + t + 1, cmp);
}ll c(int n, int
m) vectorint, ll> > ans;
int main()
while(r > q[i].r)
while(l < q[i].l)
while(l > q[i].l)
ans.push_back(make_pair(q[i].id, res));
}sort(ans.begin(), ans.end());
for(int i = 0; i < ans.size(); i++)printf("%lld\n", ans[i].second);
return
0;}
posted @
2018-08-02 15:36
呵呵!!! 閱讀(
...)
編輯收藏
HDU6333 莫隊演算法
給你n,m求 i 0mcn i 1 09 7 sum m 10 9 7 i 0m cni 10 9 7 t組資料t 1 05,1 m,n 105 t leq 10 5,1 leq m,n leq 10 5 t 105,1 m,n 10 5。這題常規思路暴力求字首和時間複雜度和空間複雜度都是顯然不夠的...
HDU6333 莫隊演算法
給你n,m求 i 0mc ni 109 7 role presentation style position relative mi 0ci n 10 9 7 i 0 mcni 109 7 t組資料t 105,1 m,n 105 role presentation style position re...
HDU 3874 Necklace 莫隊演算法
題目 題意 給定乙個陣列,每次詢問乙個區間 l,r 求區間內所有數字的和,出現多次的數字只加一次 思路 莫隊演算法掃一遍即可,注意會爆int。我陣列開小了不少re而是tle,蛋疼。include include include include include include using namesp...