FJUT第三週寒假作業《第九集,離間計》棧

2022-07-30 15:24:14 字數 1603 閱讀 7017

timelimit:1000ms  memorylimit:128mb

64-bit integer io format:%i64d

problem description

擁有了超強的體能和跑步速度後,小a的信心極度膨脹。正當他準備潛入**們的聚會地點套取情報的時候,小a發現組織的守衛非常嚴密,根本沒有漏洞可鑽。最後小a只得返回賓館同小c商量。

通過小c,小a知道了**組織內有著嚴謹的等級排名制度,然而這等級並不是嚴格按照能力來排的,但可憐的**們並不全都知道。聰明的小a立馬想到了離間計,即通過某種方式告知每個**那些排名比他高但能力比他低的人,刺激低等級的**去試探高等級的**,讓他們明白後從而引起內亂,但又擔心排名相距太大,低排名的**會因畏懼而連基本的試探也不敢去,畢竟低等級的**長期處在高等級的**的淫威下嘛。(不明白小a為什麼會知道該組織內部的等階排名嗎?因為小c曾是該組織的內部高層人員…)

現在給出乙個序列,序列中的第i個值表示排名為i的**的能力值,要求求出每個**的排名前面第乙個比他的能力值小的**的排名,最高排名從0開始,如果不存在,則輸出-1

在成功的離間了部分的**,小a才能更加容易的潛入**中獲取情報、

input

多組測試資料。

第一行輸入乙個整數n(0接下來有n個數ai(0<=ai<=1000000).ai表示排名為i的員工的能力值(0<=ioutput

輸出n個數,分別表示每個排名為i(0<=isampleinput

155

1 2 3 4 5

sampleoutput

-1

-1 0 1 2 3

n=100w常規遍歷,那麼每次都要遍歷一次,那麼複雜度達到o(n2)直接超時,於是我們進行優化。

假設序列為 3 1 2 5 4

遍歷到1時,那麼之後不論什麼情況,能力值最小的**必定是1,而不可能是3,那麼3就可以丟掉了。

於是我們猜想用乙個遞增序列儲儲存存下可能是答案的**。不可能是答案的丟掉。那麼我們就想到了棧。然後看一段推到過程。序列表示當前棧元素。

結論:1,當棧空,答案為-1

2,當新元素大於棧頂,答案就是棧頂元素的編號。

3,新元素小於棧頂,那麼意味著棧頂已經失去作用了。彈出。繼續比較。之後的結果只有兩個,結論1和結論2.

用結構儲存序列,下標,答案。value代表能力值,num代表數字

核心**。

FJUT寒假作業漲姿勢題解

題意非常簡單易懂,對於漲姿勢0,資料非常小,比較容易想到的是直接迴圈暴力解題完成任務。把資料放入陣列arr,迴圈i,j控制所有區間算和。結果記入vis.到了漲姿勢1,2,3,我們觀察資料變化,發現資料變大,0的姿勢就會超時。這是我們可以用字首陣列和處理。用sum i 表示0 i項的和,那麼區間i j...

寒假作業三題解

繼續完成作業二的程式設計題。優化架構,思考 的拓展性,比如我需要增加其他功能,如選擇,迴圈語句怎麼辦。思考 可以參考現有的程式語言,把這些語言的內容加入。如選擇 迴圈語句 函式 或者擴大數字範圍,支援負數等。if sum 0 為縮小函式長度,直接使用純數字的方式去表示漢字,與以前使用assic碼同理...

第三次寒假作業

這次將作業改為檔案的輸入輸出,我在 中插入了file fpread fopen input.txt r 並將輸入改成了 生成了 input.txt 在輸入上我將 中插入了一行 file fpwrite fopen output.txt w 並將輸出改成了 for i 0 i 5 i fprintf ...