p1440士兵
accepted
標籤:其他 排序
cscii
在gridland國家,有n個處於不同位置的士兵。該國上的地方都用兩個座標(x,y)來表示。士兵能進行一次移動,每個士兵都可向上、向下、向左、或向右移動乙個單位長,這樣他就能把自己的x或y改變1或-1。
士兵們想進入乙個水平線,彼此靠近,這樣他們的最後位置就是(x,y)、(x+1,y),…,(x+n,y))。水平線上的士兵的最後順序以及整數x和y,都是任意的。
現在目標是求如此配置士兵的最少移動數。
兩個或兩個以上的士兵在同一時間不處於同一位置。
輸入檔案的第一行含有乙個整數n,1 <= n <=10000,n為士兵的數量。輸入檔案以後的n行應含有士兵的初始位置,對於每乙個i, 1<= i <= n,輸入檔案的第i+1行含有兩個用空格分開的整數x[i],y[i],他們表示第i個士兵的座標,-10000<=x[i],y[i] <=10000.
僅有一行,它的值為使士兵移動到水平線彼此相鄰的最小移動次數。
31 02 4
3 2
4
各個測試點1s
解析:1.由於只有四個移動方向,所以x、y可以分開考慮。
2.只考慮y,y[1]。。。。y[n]要移動到同一行,代價最小,則假設p為y的中位數,都移動到第p行,代價最小。
3.再來看x,由於x是緊密的排在一起的,我們對x排序之後,排在第 i 位的士兵一定在最終排列的第 i 位,那麼我們如果對 x 排序之後,每個x[i]-=i,就變成了將 x 移動到同一列了(與上面的問題相同了)。
**:
#include#include#includeusing namespace std;
const int maxn=1e4;
int x[maxn+10],y[maxn+10];
int main()
14 4 選單功能
選單功能就是與使用者的溝通介面。1 在workermanager.h標頭檔案中新增show menu 成員函式。class workermanager 2 在workermanager.cpp中實現show menu 成員函式。其實這個函式就是在螢幕中把選單介面列印出來,沒什麼技術含量。顯示選單 v...
14 4 執行緒的通訊
執行緒通訊 乙個執行緒完成自己的任務時,就要通知另外乙個執行緒去 例子就是生產者與消費者關係 wait 等待。如果執行緒執行了wait方法,那麼該執行緒會進入等待的狀態 notify 喚醒等待的執行緒 注意 1 wait和notify方法是屬於objeck類的。2 wait和notify方法必須是要...
南陽144 某種序列
時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述 數列a滿足an an 1 an 2 an 3,n 3 編寫程式,給定a0,a1 和 a2,計算a99 輸入 輸入包含多行資料 每行資料報含3個整數a0,a1,a2 0 a0,a1,a2 100000000 資料以eof結束 輸出...