本週主要學習的是
1棧與佇列
2二分法
3位運算
首先要明白棧和佇列之間的區別,與棧相比佇列是先進先出的,先進去的就會先出來,而棧則與之不同,棧的進出順序與佇列不同並不是先進先出的有序關係,二十順序不定,候後進的可能先出。
一般線性表 棧
邏輯結構 一對一 一對一
儲存結構 順序表、鍊錶 順序棧、鏈棧
運算規則 任意位置插入和刪除 只能在表尾插入和刪除,先進後出
其次如何使得棧與佇列相轉化,當佇列轉換為棧時,可以通過使用兩個佇列來實現由佇列向棧的轉化,同樣的也可以通過用兩個棧來實現佇列的功能。
二分法可以分成整數的二分和浮點型的二分,兩者相比較下浮點型的二分更好理解,更為簡單而正數的二分其需要考慮的更為多,同時需要思考其邊界問題。
bool
check
(int mid)
intbsearch1
(int q,
int l,
int r)
return l;
}int
bsearch2
(int q,
int l,
int r)
return l;
}
以acwing的題目為例子
#include
#include
using
namespace std;
double n;
intmain()
printf
("%lf"
, l)
;return0;
}
關於位運算的知識點有
一位運算的運算符號
1)按位取反(~)
2)按位與(&)
3)按位異或(^)
4)按位或(|)
5)按位左移(<
6) 按位右移(>>)
1字首和
字首和實則就是數列中的前n項的和
//輸入
for(
int i =
1; i <= n; i ++
)scanf
("%d"
,&a[i]);
//計算字首和
for(
int i =
1; i <= n; i ++
) s[i]
= s[i -1]
+ a[i]
;while
(m --
)
2差分
int ans,a,b;
ans=sum[b]
-sum[a-1]
;
第二週學習總結
在本週,學習了物件導向的三大特徵,封裝,多型,繼承 讓我感覺到學習 的不易,基礎實在是很重要,現記錄本週學習過程 現的問題以及解決注釋。1.構造方法與成員方法的區別 成員方法 一般實現對類中成員變數的操作,提供某些功能,有返回值型別,通過物件呼叫!構造方法 一般是給物件的資料進行初始化,沒有返回值,...
第二週學習總結
一 棧和佇列的簡介 先進後出 限定性操作 棧具有後進先出的特性,如果問題解決具有先進後出的天然特性的話,則求解的演算法就要使用棧。先進先出 限定性操作 佇列具有先進先出的特性,如果問題解決具有先進先出的特性的話,則求解的演算法就要使用佇列。二 對棧和佇列的認識 棧 限制在表的一端進行插入和刪除運算的...
第二週學習總結
貪心演算法的分類 類中的建構函式以及new和delete 感悟1 追求最大利潤 這種題目的一般會有利潤和時間兩個變數 解決思想一般是兩種,第一種是求出最大的平均利潤,第二種是按 排序追求最大利潤。在本週所做的b題屬於第二種,每個商品都有最晚賣出時間與利潤,每天只能賣乙個商品,而我在這個題中一開沒讀懂...