詢問[l,r]元素種類數
帶標記的樹狀陣列
把顏色轉化為0/1標記(記錄下next和first/last,然後每個fisrt對應的值置1,l移動的時候就把l對應的地方置0,next[l]對應的值置1)
然後求字首和(樹狀陣列)即是種類數
壞習慣://
// created by rv on 2018/4/23.
//#include
#include
const
int buffer_size = 10
<< 20;
char buffer[buffer_size];
char* ptr = buffer;
const
int n = 100000 + 5;
const
int m = 200000 + 5;
int c[n], next[n], first[n], qlast[n], qnext[m], r[m], ans[m];
struct bit
void add(int pos, int delta)
}int sum(int pos)
return res;
}};inline
void read_int(int& x)
while (*ptr >= '0' && *ptr <= '9')
}int main()
read_int(m);
for (int i = 1; i <= m; i++)
for (int i = n; i >= 1; i--)
for (int i = 1; i <= c; i++)
}// for (int i = 1; i <= m; i++)
for (l = 1; l <= n; l++)
bit.add(l, -1);
if (next[l] > 0)
}for (int i = 1; i <= m; i++)
return
0;}
每次都忘記賦初值,每次都沒有處理邊界情況,寫的每乙個字元都沒有考慮,範圍沒有搞清楚就寫下去了,小問題很多(以後要做到寫完每一句話就把這句話靜態除錯一遍)
執行時間0ms原理:
使用stdio.h和fread讀入即可大幅度提公升速度,然後就幾乎測不出執行時間(windows的最小執行時間片是15ms)
fread讀入優化:
fread(readbuffer, 1, max_buffer_size, stdin);
樹狀陣列2
1157 新年彩燈 time limit 1 sec memory limit 128 mb submit 73 solved 25 submit status web board description 新年將至,yy準備掛一片彩燈,形狀呈矩形,已知彩燈剛掛完的彩燈共有n n盞 第一排編號為 1,...
樹狀陣列2 更高深的樹狀陣列
一 區間修改區間求和 這個東西可就不是把 單點查詢區間修改 和 單點修改區間查詢 合起來那麼簡單了,仔細想想,拿之前的辦法都不咋地好做,那麼怎麼辦呢,我們還是要用到差分陣列,設原陣列為a,差分陣列為b,則b 1 a 1 b i a i a i 1 那麼區間修改我們就解決了,只需要log的時間即可,但...
樹狀陣列模板2
如題,已知乙個數列,你需要進行下面兩種操作 1.將某區間每乙個數數加上x 2.求出某乙個數的和 輸入輸出格式 輸入格式 第一行包含兩個整數n m,分別表示該數列數字的個數和操作的總個數。第二行包含n個用空格分隔的整數,其中第i個數字表示數列第i項的初始值。接下來m行每行包含2或4個整數,表示乙個操作...