2018 02 05 演算法綜合測驗

2022-05-10 04:51:27 字數 3166 閱讀 6201

2018.02.05

演算法綜合測驗

今天我們進行了一次包括動態規劃在內的綜合考試。分數190=40+100+40+10。下面對此次考試進行總結。

1.奔跑的玉兔

嫦娥和豬八戒是一對戀人,但由於觸犯天條,不得見面。終於在一次蟠桃宴會上,玉帝大發慈悲,允許他們見一次面。他們萬分激動,各自聽到訊息後,豬八戒從立即高老莊出發,嫦娥立即從廣寒宮出發,準備前往對方的住所。嫦娥出發時還放出了玉兔,玉兔由於踏著風火輪的原因,比二位仙人跑得更快,在他們之間來回跑啊跑,中途遇到豬八戒或者嫦娥就掉頭,跑了好幾趟,後來他們終於相遇了,玉兔因為鍛鍊瘦了幾斤。求玉兔共跑了多長距離。

輸入格式:

共一行,有四個正整數,依次是l、

v1、v2、

v3(範圍均在

1~100000

),分別表示豬八戒和嫦娥住所的距離,嫦娥的速度,豬八戒的速度,玉兔的速度。輸入保證玉兔的速度不會比嫦娥和豬八戒的慢。

輸出格式:

乙個正整數,即玉兔總共跑過的距離,需要捨去小數字,保留整數部分

解析:一道水題,明顯的小學奧數,套公式:$s玉兔=l/(v1+v2)*v3$即可。可惜因為沒有注意精度的問題,只有40分。下次要注意,%.0lf會四捨五入。

**:

1 #include 2 #include 3 #include 

4int

main()

view code

2.ioi

2023年長沙市一中將舉辦ioi,需要購置大量的裝置。現在聯絡了n個**裝置的經銷商,第i個經銷商保有的裝置庫存為si,報出每台裝置的**為pi元。如果長沙市一中有預算m元,最多可以買多少臺裝置?由於學校撥款預算方案還沒有下來,採購組只能估計多個預算費用m,並提前計算採購力。

輸入格式:

第一行:乙個正整數n(n<10000)。第二行到第n+1行:第i+1行包含兩個正整數:si pi (均不超過1000)。第n+2行:乙個正整數t(t<100000),表示有多少個m。第n+3行到第n+t+2:每行乙個正整數m

輸出格式:

共t行:每行乙個整數,按照輸入的m的順序,輸出m元預算能買到最多裝置的數量c。

解析:本題100完美ac,和金銀島類似,只要先排序,再按照單價最小的購買即可。優化:買機器時,可以一批一批的買,不用一台一台買。

**:

1 #include 2 #include 3 #include 4 #include 5 #include 6

using

namespace

std;

7struct data mach[10001];8

bool cmp(data a,data b)

9int

main()

28else

if(mmach[j].shu)32}

33 printf("

%d\n

",sum);34}

35return0;

36 }

view code

3.hnfms

有乙個大寫字母構成的字串行s,現問在這個字串中包含了多少個「hnfms」的子串行。

輸入格式:

第一行是乙個正整數t(t<=100),表示輸入包含t組測試資料,接下來t行,每行乙個長度不超過10000的大寫字母序列s

輸出格式:

輸出t行,每行乙個整數,第i行輸出第i個字串行中包含的「hnfms」子串行的個數,保證資料都在long long範圍內。

解析:純模擬在時間上肯定是不夠的,但是這個題目可以使用貪心的思想來做,根據乘法原理,很容易就可以寫出如下程式,其實這也是動態規劃的優化版。

**:

1 #include 2 #include 3 #include 

4int

main()

21 printf("

%lld\n

",s);22}

23return0;

24 }

view code

4.旅行

畢業後,阿黎和阿美迎來了人生中最愜意的假期,打算一同去旅行。由於假期比較長,路上需要帶很多東西。阿美和阿黎各自都有乙個足夠大的行李箱,他們商量著要把諸如食物、飲料、帳篷、毛毯等物品都放到這兩個行李箱裡帶在身邊。他們相互關愛,不願讓對方比自己更累,想把行李分成盡可能重量相當的兩份各自攜帶。當然,阿黎不允許自己行李箱中的物重量比阿美的輕。

輸入格式:

輸入包括兩行,第一行包含乙個表示要帶上的物品件數的正整數n(1<=n<=1000),第二行包含n個不超過100的正整數,依次表示1~n號物品的重量w1,w2,…,wn。每個物品有自己的標號,從1標號到n。

輸出格式:

輸出兩行,第一行表示阿黎行李箱中放置的物品標號,數字用單空格隔開,第二行表示阿美行李箱中放置的物品標號,數字用單空格隔開。只需要輸出一種最優方案即可,輸出順序不作要求。

解析:仔細分析題意,我們可以發現問題可以轉化成阿美要在背的東西不超過物品總價值的二分之一的情況下,盡可能多背一些東西,說白了,其實就是01揹包問題。mdzz考試的時候沒寫出來只有10分。在這個問題中,所有物品重量相同,價值有大有小,在價值不超過總重二分之一的情況下,使價值盡可能大。

**:

1 #include 2 #include 3 #include 

4int w[101],c[101];5

int f[101][1001];6

int _max(int x,int y)

7int

main()

01揹包模板(非題解)

期末測驗 課程水平綜合測驗 第10周

這是python123官網上聯合mooc的python程式設計 第10期 答案 基礎題,讀取輸入後把空格去掉即可 題目要求統計不重複的行,而集合中的元素正好擁有不重複的特性,由此想到使用集合進行訪問,能存進集合的行一定不重複,最後統計集合元素個數即可。s set num 0 f open latex...

演算法練習 珠心算測驗

珠心算是一種通過在腦中模擬算盤變化來完成快速運算的一種計算技術。珠心算訓練,既能夠開發智力,又能夠為日常生活帶來很多便利,因而在很多學校得到普及。某學校的珠心算老師採用一種快速考察珠心算加法能力的測驗方法。他隨機生成乙個正整數集合,集合中的數各不相同,然後要求學生回答 其中有多少個數,恰好等於集合中...

程式設計與演算法三七周測驗

描述 填寫模板 printarray,使得程式輸出結果是 tomjackmaryjohn 10 不得編寫sumarray函式 include include using namespace std template t sumarray 補充 int main cout sumarray array...