1. 程式人生 > 其它 >模擬賽總結(21.12.11)

模擬賽總結(21.12.11)

模擬賽總結2

錯題

  1. T5 軍事機密(secret)

    【問題描述】 軍方截獲的資訊由 n(n<=30000)個數字組成,因為是敵國的高階祕密,所以一時不能破獲。最原始的想法就是對這 n 個數進行從小到大排序,每個數都對應一個序號,然後對第 i 個是什麼數感興趣,現在要求程式設計完成。

    【輸入格式】 第一行 n,接著是 n 個截獲的數字,接著一行是數字 k,接著是 k 行要輸出數的序號。

    【輸出格式】 k 行序號對應的數字。

    【輸入樣例】 5 121 1 126 123 7 3 2 4 3

    【輸出樣例】 7 123 121

    其實這題壓根不該錯...因為與上一題極度相似所以就直接把上一題程式碼交上去了...可惜人算不如出題人算,他改範圍了...因此上一題的陣列範圍放到這題就太小了...改完再交就過了

  2. T9 士兵站隊問題 (洛谷P1889)

    【問題描述】 在一個劃分成網格的操場上,n個士兵散亂地站在網格點上。網格點由整數座標(x,y)表示。士兵們可以沿網格邊上、下、左、右移動一步,但在同一時刻任一網格點上只能有一名士兵。按照軍官的命令,士兵們要整齊地列成一個水平佇列,即排列成(x,y),(x+1,y),...,(x+n-1,y)。如何選擇x和y的值才能使士兵們以最少的總移動步數排成一列。

    【程式設計任務】 計算使所有士兵排成一行需要的最少移動步數。

    【輸入格式】 第1 行是士兵數n,1≤n≤10000。接下來n 行是士兵的初始位置,每行2個整數x 和y,-10000≤x,y≤10000。

    【輸出格式】 第1行中的數是士兵排成一行需要的最少移動步數。

    【輸入樣例】5 1 2 2 2 1 3 3 -2 3 3

    【輸出樣例】8

    當時做的時候按照樣例的思路就橫著挪了一步得了9分再就用剩下的將近一個小時摳這題了...最後還是9分TAT

    縱向移動可以搬過來上題的程式碼

    重點是橫向移動的思路

    正解的思路大概是

    假設第一名士兵站的位置是\(k\),那麼後面\(n\)個士兵站的位置依次是\(k+1,k+2,...,k+n\)

    那麼士兵橫向移動的舉例就是

    \[|x_1-k|+|x_2-(k+1)|+|x_3-(k+2)|+...+|x_n-(k+n-1)| \]

    現在還看不出來什麼

    但是再整理

    \[|(x_1-0)-k|+|(x_2-1)-k|+|(x_3-2)-k|+...+|(x_n-(n-1))-k| \]

    如果我們令\(t=x_i-i+1\)

    ,那麼距離和就是\(\displaystyle\sum_{i=1}^n|t_i-k|\)

    那麼,距離和最小值的時候,\(k\)即為\(x_1,x_2,...,x_n\)的中位數

耍了小聰明的題(

  1. T8(洛谷P1862

    【問題描述】

    某石油公司計劃建造一條由東向西的主輸油管道。該管道要穿過一個有n口油井的油田。從每口油井都要有一條輸油管道沿最短路徑(或南或北)與主管道相連。如果給定n口油井的位置,即它們的x座標(東西向)和y座標(南北向),應如何確定主管道的最優位置,即使各油井到主管道之間的輸油管道長度總和最小的位置?證明可在規定時間內確定主管道的最優位置。

    【程式設計任務】 給定n口油井的位置,程式設計計算各油井到主管道之間的輸油管道最小長度總和。

    【輸入格式】第1行是油井數n,1≤n≤10000。接下來n 行是油井的位置,每行2個整數x和y,-10000≤x,y≤10000。

    【輸出格式】 第1行中的數是油井到主管道之間的輸油管道最小長度總和。

    【輸入樣例】

    5

    1 2

    2 2

    1 3

    3 -2

    3 3

    【輸出樣例】

    6

    打的暴力,從最低點到最高點遍歷了一遍尋找最小的長度和並輸出

    我覺得吧,要是這題認真想想也不至於第九題做不出來...

    設最終管道y座標為m,那麼最後的長度和即為

    \[S=|m-y_1|+|m-y_2|+|m-y_3|+...+|m-y_n| \]

    長度和的最小值其實就是\(y_1\)\(y_n\)的中位數

    算就完了(

總結

  • 大部分題一次AC,好耶!
  • 手和腦子不能同時懶(
  • 數學很重要
  • 不會的題要試著去推式子

這OJ名字絕了——996OJ
剛發現這是一本通附贈光碟裡的題(