雙指標 位運算

2021-09-24 18:19:55 字數 2375 閱讀 7240

乙個開頭 乙個結尾

乙個開頭 乙個中間(劃分為兩部分)

for(i = 0, j = 0; i < n; i++)
for(int i = 0; i < n; i++)

for(int j = 0; j < n; j++)

o(n^2)

將上面bf演算法優化到o(n)

將空格分割的單詞提取出來

#include #include using namespace std;

int main()

return 0;

}

最長連續不重複子序列

最長連續不重複子序列

樸素 o(n^2)

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

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

if(check(j, i))

雙指標 o(n)

for(int i = 0, j = 0; i < n; i++)
code

#include #include using namespace std;

int n;

const int n = 1e6 + 10;

// a 讀入序列

// s 區間數列 出現次數

int a[n], s[n];

int main()

res = max(res, i - j + 1);

} cout << res;

}

n = 15 = (1111)2

先把第k位移到最後>>k看下個位是幾x&1

n >> k & 1

803二進位制表示中共有多少個1

x = 1010

lowbit(x) = 10

x = 101000

lowbit(x) = 1000

x&-x=x&(~x+1)

#include using namespace std;

int lowbit(int x)

int main()

}

#include #include #include using namespace std;

typedef pairpii;

const int n = 3e6+10;

int n, m;

int a[n], s[n];

vectoralls;

vectoradd, query;

int find(int x)

return r + 1;

}int main());

alls.push_back(x);

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

alls.push_back(l);

alls.push_back(r);

} // 去重

sort(alls.begin(), alls.end());

alls.erase(unique(alls.begin(), alls.end()), alls.end());

// alls剩下都是不重複的

// 把add離散化到a 處理插入

for(auto item:add)

for(int i = 1; i <= alls.size(); i++) s[i] = s[i -1] + a[i];

for(auto item:query)

return 0;

}

按照區間左端點排序

掃瞄整個區間, 把可能有交集區間進行合併

#include #include #include using namespace std;

typedef pairpii;

const int n = 1e6 + 10;

int n;

vectorsegs;

void merge(vector&segs));

st = seg.first, ed = seg.second;

}else

if(st != -2e9) res.push_back();

segs = res;

}int main());

} merge(segs);

cout << segs.size() << endl;

return 0;

}

字首和 差分 位運算 雙指標

可以利用字首和解決用o n 的時間複雜度求出一段序列的某一段區間的和。s i a 1 a 2 a i a l a r s r s l 1 例題輸入乙個長度為n的整數序列。接下來再輸入m個詢問,每個詢問輸入一對l,r。對於每個詢問,輸出原序列中從第l個數到第r個數的和。輸入格式 第一行包含兩個整數n和...

寒假刷雙指標《雙指標》

633.平方數之和 難度中等163 給定乙個非負整數c,你要判斷是否存在兩個整數a和b,使得a2 b2 c。示例 1 輸入 c 5輸出 true解釋 1 1 2 2 5示例 2 輸入 c 3輸出 false示例 3 輸入 c 4輸出 true示例 4 輸入 c 2輸出 true示例 5 輸入 c 1...

位運算(1) 初識位運算

前段時間數電課學了些進製轉換,還有與或非等邏輯運算,如今再來看看位運算,倒輕鬆了不少。很早就想寫些非總結性部落格了,奈何還是太懶。也也不知怎的突然又來了興致,趕忙寫下這篇部落格。廢話不多說,今天準備總結總結關於位運算的知識。程式中的所有數在計算機記憶體中都是以二進位制的形式儲存的,即0 1兩種狀態,...