ACM北大暑期課培訓第一天

2022-09-17 11:36:17 字數 1808 閱讀 5502

今天是acm北大暑期課開課的第一天,很幸運能參加這次暑期課,接下來的幾天我將會每天寫部落格來總結我每天所學的內容。好吧下面開始進入正題:

今天第一節課,郭煒老師給我們講了二分分治貪心和動態規劃。

1.二分主要講了兩個函式:binary_search 和 lower_bound

binary_search在包含size個元素的、從小到大排序的int陣列a裡查詢元素 p,如果找到,則返回元素下標,如果找不到,則返回-1。

lower_bound在包含size個元素的、從小到大排序的int陣列a裡查詢比給 定整數p小的,下標最大的元素。找到則返回其下標,找不到則返回-1。

ps :為了防止 (l+r)過大溢位:int mid = l+(r-l)/2;

還講了二分法求方程的根

///

求方程 x*x*x - 5*x*x + 10*x - 80 的乙個根a

///已知 f(0)

< 0 ; f(100) >

0///

要求|f(a)|

<=1e-6

#include

#include double eps = 1e-6

;double f(double

x)int

main()

printf(

"該方程的乙個根為:%.8f\n

",root);

return0;

}

二分法求方程的根(舉例)

例題:poj 2456 aggressive cows

ps:最小值最大這類問題 ,先考慮二分是否可行 ,如果可行首選二分

2.分治   其基本概念為:把乙個任務,分成形式和原任務相同,但規模更小的 幾個部分任務(通常是兩個部分),分別完成,或只 需要選一部完成。然後再處理完成後的這乙個或幾個 部分的結果,實現整個任務的完成。

其典型應用為:歸併排序和快速排序。

例題:1.輸入n個數輸出前m大的數

2.求逆序數

3.分假幣

3.貪心   每一步行動總是按某種指標選取最優的操作來進行, 該指標只看眼前,並不考慮以後可能造成的影響。 貪心演算法需要證明其正確性。

例題:1. openj_bailian 4110 聖誕老人的禮物-santa clau』s gifts

2.openj_bailian 4151 電影節

3.poj 3190 stall reservations

4.poj 1328 radar installation

4.動態規劃

動規解題的一般思路:

1. 將原問題分解為子問題

2. 確定狀態(整個問題的時間複雜度是狀態數目乘以計算每個狀態所需 時間。)

3. 確定一些初始狀態(邊界狀態)的值

4. 確定狀態轉移方程

能用動規解決的問題的特點

1) 問題具有最優子結構性質。

2) 無後效性。(當前的若干個狀態值一旦確定,則此後過程 的演變就只和這若干個狀態的值有關,和之前是採取哪 種手段或經過哪條路徑演變到當前的這若干個狀態,沒 有關係。)

解題思路:

1.找子問題

2. 確定狀態

3. 找出狀態轉移方程:

動規的三種形式:

1)記憶遞迴型

2) 「我為人人」遞推型

3) 「人人為我」遞推型(用的較多)

例題:1.poj 1163 the ******** 

2.openj_bailian 2757 最長上公升子串行

ACM 暑期計畫 第一天

7 06,現在已經開始計畫了。8 00,一開始看547a,感覺太難放棄了。然後正在看547b,中間還睡了十幾分鐘。效率 很低下,想睡覺 9 00,決定睡了三十多分鐘,然後現在正在看547b題。效率 一般。此時一位學弟告訴我因身體原因要退了,把書還給了我 得知患過骨癌。平時還是注意過他,挺認真,經常最...

第一天培訓

上午 硬體研發需要的工程技能 硬體驅動行業發展 物聯網大資料 硬體成為領導企業的核心競爭力 開源平台 大 大降低了 硬體學習的難度和成本 重要的產品 indiegogo adafruit tindie crowdsupply hackday hacker.io 優秀的 士兵 vs 將軍 全域性意識 ...

培訓第一天

主要在培訓班級裡主要做了自我介紹 linux開發環境的搭建。1.自我介紹 自我介紹其實還是有一點緊張的,明明在台下想的是怎麼說,但是上台了就忘了。還是心態緊張,畢竟現在自我表達能力還是有短板的。總之第一次在這種場面以這種方式自我介紹,也是來的第一次嘛,我相信在之後的學習生活中會慢慢提公升的。2.開發...