題解 P1253 線性儲存問題

2021-09-24 04:22:46 字數 1461 閱讀 3665

本題核心思想:長度×頻率

很多人不知道為什麼是這個式子,兩片題解說的也不是很清楚,我來詳細解釋一下。

小學知識:百分率

我們會忽略題目中的:

使用的頻率(萬分比,在0到9000之間)

這是乙個萬分率,我們不難想,用長度×萬分率得到的就是第a

ia_i

ai​段資訊的查詢時間。

為什麼呢?

通常,我們在生活中說「某物體長度使用的頻率就是人們檢索的時間」。

正好和這題對上號。

以上是分析,下面,讓我們來看如何實現。

設第a

ia_i

ai​個資訊所檢索的時間為er(

extr

emer

atio

)er(extreme\ ratio)

er(ext

reme

rati

o)設第a

ia_i

ai​個資訊的編號為num

(num

ber)

num(number)

num(nu

mber

) 從題意可以推出,這兩種量是相連的。

所以,我們可以用結構體實現。

結構體是多個資料的集合。

我們可以理解為關聯容器。

例如,人口普查時,每家每戶的資訊,用乙個結構體陣列表示。

依題意,一條資訊有兩種表達,且這兩種表達是相連的,均滿足結構體使用條件。

但是,我們發現了乙個棘手的問題:

這題要求平均檢索時間最短的方案,所以肯定要排序。

如何排序?

這裡只說快排,其他排序可以手推。

一樣排序,但cmp

cmpcm

p函式要這樣寫。注釋在**裡。

struct ans fn [

10001];

//結構體陣列fn

int cmp ( ans a , ans b )

然後,直接輸出即可。

#include

#include

#include

using

namespace std;

struct ans fn [

10001];

//結構體陣列fn

int cmp ( ans a , ans b )

intmain()

sort ( fn +

1, fn + n +

1, cmp )

;//排序

for( i =

1; i <= n ; i ++

)//輸出

cout << endl ;

return0;

}

題解 P2622 關燈問題II

題目 感覺大佬們的 在讀入上的處理比本蒟蒻優秀多了,於是,乙個afo蒟蒻弱弱地提出一下自己的看法 首先,對於 n 那麼小,肯定是狀壓啦 對於讀入,本蒟蒻開了兩個陣列來儲存每個按鈕的效果 open i 和 close i 分別表示在按下第 i 個按鈕後,它對於開著的開關和關閉的開關所造成的影響 那麼我...

線性表 順序儲存習題P18 1 1 1 4

1.1.從順序表中刪除具有最小值的元素 假設唯一 並由函式返回被刪除的元素的值,空出的位置由最後乙個元素填補,若順序表為空則顯示出錯資訊並退出執行 bool del min sqlist l,elemtype value l.data pos l.data l.length 1 空出的位置由最後乙個...

線性表 順序儲存習題P18 1 5 1 9

1.5.從順序表中刪除其值在給定值s與t之間,包含s和t,要求s l.length s t return false for i 0 i l.length i l.length k return true 1.6.從有序順序表中刪除所有其值重複的元素,使表中所有元素的值均不同 為有序順序表,所以重複...