BZOJ 3289 莫隊 樹狀陣列

2021-07-09 15:27:36 字數 1384 閱讀 6812

題意:

問[l,r]區間最少交換幾次相鄰數字使得整個序列有序。

思路:

統計逆序對,用樹狀陣列。然後跑一遍莫隊。

離散化部分容易超時,所以直接修改了陣列。

原始碼:

#include 

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

#define ll unsigned int

const

int maxn = 50000 + 5;

int tr[maxn * 2]; ///tree array

int cnt;

int lowbit(int u)

void update(int u, int v)

}ll query(int u)

return ans;

}int data[maxn];

int pos[maxn];

int blocksize;

int n, m;

struct q

q[maxn];

bool cmp(q a, q b)

int tt[maxn];

ll res[maxn];

mapmm;

int main()

for(int i = 1 ; i <= n ; i++) data[i] = mm[data[i]];

// for(int i = 1 ; i <= n ; i++) printf("data[i] = %d, mm = %d\n", data[i], mm[data[i]]);

// printf("cnt = %d\n", cnt);

// system("pause");

scanf("%d", &m);

for(int i = 0 ; i < m ; i++) scanf("%d%d", &q[i].l, &q[i].r), q[i].id = i;

sort(q, q + m, cmp);

int curr = 0;

int curl = 1;

memset(tr, 0, sizeof(tr));

ll ans = 0;

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

for(int i = 0 ; i < m ; i++) printf("%d\n", res[i]);

}return

0;}

bzoj3289(莫隊 樹狀陣列)

description mato同學從各路神犇以各種方式 你們懂的 收集了許多資料,這些資料一共有n份,每份有乙個大小和乙個編號 為了防止他人偷拷,這些資料都是加密過的,只能用mato自己寫的程式才能訪問。mato每天隨機選乙個區間 l,r 他今天就看編號在此區間內的這些資料。mato有乙個習慣,他...

BZOJ 3289 莫隊演算法 樹狀陣列

time limit 40 sec memory limit 128 mb submit 1671 solved 732 submit status discuss mato同學從各路神犇以各種方式 你們懂的 收集了許多資料,這些資料一共有n份,每份有乙個大小和乙個編號。為了防止他人偷拷,這些資料都...

莫隊 樹狀陣列 AHOI 作業

3236 ahoi2013 作業 time limit 100 sec memory limit 512 mb submit 1716 solved 690 submit status discuss description input output sample input 3 41 2 2 1 ...