2 1基礎演算法

2022-09-10 10:09:28 字數 1671 閱讀 7994

1.雙指標

2.位運算

3.離散化

1)去除重複元素

vectorall;

sort(all.begin() , all.end());//

排序all.erase(unique(all.begin() , all.end()) , all.end());//

刪除末尾的重複元素

2)**

#include #include 

#include

using

namespace

std;

typedef pair

pii;

const

int n = 300010

;int a[n] , s[n];//

a陣列:在all陣列數字所在位置+1 的地方存放他的值 ; s是a 的字首和

intm,n;

vector

all;//

存放所有的有改變的陣列下標, 以及 l 和 r

vectoradd,query;

/**add存放的是

* query存放的是 */

//返回all陣列中x的下標+1 , 即第幾個數字

int find(int

x)

return l+1;}

intmain()

); }

while (m --));

all.push_back(l);

all.push_back(r);

}sort(all.begin() , all.end());

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

for(auto p:add)

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

for(auto q:query)

return0;

}

3.區間合併

1)按照區間左端點排序

2)**

#include #include 

#include

#include

using

namespace

std;

int st = -1e9 , ed = -1e9;

typedef pair

pii;

vector

seg;

void merge(vector&seg));

st =p.first;

ed =p.second;

}else ed =max(ed,p.second);

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

seg=res;

}int

main()

); }

merge(seg);

cout

return0;

}

2 1基礎演算法(排序)

1.快速排序 基本思想是分治,時間複雜度nlog n 1 確定分界點 2 調整區間 3 遞迴處理左右兩段 include include using namespace std const int n 100010 int a n void quick sort int a int l int r ...

JavaScript 基礎 21點演算法

在賭場 21 點遊戲中,玩家可以通過計算牌桌上已經發放的卡牌的高低值來讓自己在遊戲中保持優勢,這就叫21 點演算法。根據下面的 每張卡牌都分配了乙個值。如果卡牌的值大於 0,那麼玩家應該追加賭注。反之,追加少許賭注甚至不追加賭注。count change cards 12,3,4,5,6 07,8,...

基礎演算法2 1 列舉法

題目上新增了超連結,大家點一下題目就會自動跳轉到poj原題介面 冲鸭衝鴨 列舉法由於建模簡單,所以用來提高 實現能力十分合適,暴力搜尋ac題時成就感也是滿滿,而且列舉法應該是之後所有演算法的基礎。我覺得部分演算法的本質只是解決了如何列舉以及對列舉的優化。大家放心起航吧!本章節弄懂題意就可以做,所以就...