日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

208计算机领域,2017-208NOIP-实用算法(中国计算机学会编).doc

發布時間:2024/1/1 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 208计算机领域,2017-208NOIP-实用算法(中国计算机学会编).doc 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2017-208NOIP-實用算法(中國計算機學會編)

2017-2018 NOIP中國計算機學會

PAGE

PAGE 2

2017-2018 NOIP 實用算法

中國計算機學會 2017

1.模擬方法 3

a.用數學量和圖形描述問題 3

b.模擬計算過程 3

c.模擬時的優化 3

d.高精度計算算法 4

習題 5

2.排序算法與算法時空復雜度 6

a.簡單排序算法 6

b.快速排序、堆排序 6

c.算法時空復雜度 7

d.時空的簡單優化方法 8

e.線性時間排序 8

f.歸并排序 9

g.合理選用排序算法 9

習題 9

3.搜索 10

a.復雜的模擬問題與利用相似性 10

b.函數的遞歸調用 10

c.棧與深度優先搜索 11

d.深度優先搜索的優化 12

e.隊列與廣度優先搜索 12

f.廣度優先搜索的優化 12

習題 13

4.貪心方法 14

a.工程計劃模型 14

b.部分背包與每步最優 14

c.構造貪心算法 15

習題 15

5.動態規劃 16

a.另一種形式的工程計劃 16

b.記憶化搜索 16

c.數字三角形:遞推地思考問題 17

d.石子合并:狀態的確定 17

e.街道問題:狀態量維數的確定與無后效性 18

f.0-1 背包:巧妙地選取狀態量 19

g.Bitonic 旅行:最佳的狀態轉化方式 20

h.最長非降子序列模型 20

i.構造動態規劃算法 21

j.動態規劃、遞推、廣度優先搜索的區別與轉化 21

習題 21

6.常用數學方法 22

2

a.排列組合 22

b.遞推與通項的選用 23

7.分治 26

a.子問題與母問題的相似性 26

b.二分查找 26

c.分析算式 26

d.最長非降子序列的二分法 29

8.圖論思想 30

a.圖論基礎 30

b.圖的表示方法 30

c.經典圖論算法 30

d.構造圖論模型 32

習題 33

附件:關鍵路徑算法、篝火晚會問題解法源文件33

3

1.模擬方法

a.用數學量和圖形描述問題

計算機處理的是數學量。若要用計算機解決實際問題,需要把實際問題抽象為數學量,或者數字。比如,

記事本把文字按ASCII 碼表轉換為數字儲存起來,極品飛車把賽車的性能表示為數字,來權衡賽車的

好壞。一個漂亮的算法,需要用數學量表示出來。

任務:現有兩個軟件工程的制作任務,你的團隊可以接手其中任意一個。現要在兩個中選擇一個,需要

考慮制作成本,制作成功的可能性,可獲得經濟收益的多少,對你的團隊知名度的影響等等因素。你

如何量化地分析和解決這個問題?

提示:需要把每一項都轉化為數值,必要時加入權值、計算期望。如果只考慮以上四個因素,可以得到

以下數學式

綜合收益=制作成功的概率*[(可獲得經濟收益-制作成本)*經濟效益的權值+團隊知名度的影響*社會

效益的權值]

其中概率和兩個權值是需要估計的值。

有時,我們需要用更直觀的圖形來描述實際問題。

圖論就是一個絕佳的方法。圖是一種表示離散量間關系的形式,它也是一種思想,常被用于建模。同時,

前人也為我們提供了很多現成的圖論算法,能夠解決很多常見問題,這些將在之后被提到。

矩陣也是一種常見的方法。有時矩陣被表示成三角形的形式,比如“楊輝三角”。矩陣常常和數學有關,

在計算機計算時常常利用矩陣的遞推式。這也將在后面被提到。

b.模擬計算過程

模擬方法是最常見、最直接的算法構建方法。

任務:編程實現歐幾里得算法(輾轉相除法,求兩個數的最大公約數gcd(a,b))

提示:

歐幾里得算法原理:gcd(a,b)=gcd(b,a mod b)

歐幾里得算法的圖形描述——

| 168 63 | | 168 63 | 2

| 42 |

1.寫下兩個數2.將兩數相除,余數寫在較大的數下面

| 168 63 | 2 | 168 63 | 2

1 | 42 21 | 1 | 42 21 | 2 ——整除

3.將每列最下面的數相除,余數寫在被除數下面4.重復步驟3直至整除,此時最后寫下的余數即為

開始時兩數的最大公約數

這是一個簡單的模擬算法,實際過程中,量間的關系往往比這復雜得多,因而,模擬算法可以是很復雜

的。

有些模擬算法還涉及到圖形和其他復雜的數據結構,這需要我們熟練地運用語言,巧妙地把其他關系轉

化為數學量間關系。

c.模擬時的優化

如果處理不當,模擬方法寫出的程序會非常長。這要求我們在模擬是將相似的步驟合為一體,適時利用

函數簡化程序。

以上面的歐幾里得算法為例:

4

/*實現時,若將左邊一列數最下面的記為L[1000]、右邊一列數記為R[1000],顯然是不明智的,因

為只有每列最后一個數會在以后的計算中用到*/

/*實現方法一:及每一列最后一個數分別為L、R。輸入即可是L、R,返回gcd(L,R)*/

int Euclid_1(int L,int R)

{

for(;;)

{

L=L%R;

if(L=

總結

以上是生活随笔為你收集整理的208计算机领域,2017-208NOIP-实用算法(中国计算机学会编).doc的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。