2014百度之星资格赛第二题
Disk Schedule
Time Limit: 2000/1000 MS (Java/Others)????Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2560????Accepted Submission(s): 366
Problem Description 有非常多從磁盤讀取數(shù)據(jù)的需求。包括順序讀取、隨機讀取。為了提高效率。須要人為安排磁盤讀取。
然而,在現(xiàn)實中,這樣的做法非常復(fù)雜。
我們考慮一個相對簡單的場景。
磁盤有很多軌道,每一個軌道有很多扇區(qū),用于存儲數(shù)據(jù)。
當我們想在特定扇區(qū)來讀取數(shù)據(jù)時。磁頭須要跳轉(zhuǎn)到特定的軌道、詳細扇區(qū)進行讀取操作。為了簡單,我們?nèi)绻蓬^能夠在某個軌道順時針或逆時針勻速旋轉(zhuǎn)。旋轉(zhuǎn)一周的時間是360個單位時間。磁頭也能夠任意移動到某個軌道進行讀取。每跳轉(zhuǎn)到一個相鄰軌道的時間為400個單位時間,跳轉(zhuǎn)前后磁頭所在扇區(qū)位置不變。
一次讀取數(shù)據(jù)的時間為10個單位時間,讀取前后磁頭所在的扇區(qū)位置不變。
磁頭同一時候僅僅能做一件事:跳轉(zhuǎn)軌道,旋轉(zhuǎn)或讀取。 如今,須要在磁盤讀取一組數(shù)據(jù),如果每一個軌道至多有一個讀取請求,這個讀取的扇區(qū)是軌道上分布在 0到359內(nèi)的一個整數(shù)點扇區(qū),即軌道的某個360等分點。
磁頭的起始點在0軌道0扇區(qū),此時沒有數(shù)據(jù)讀取。
在完畢所有讀取后,磁頭須要回到0軌道0扇區(qū)的始點位置。
請問完畢給定的讀取所需的最小時間。
Input 輸入的第一行包括一個整數(shù)M(0<M<=100)。表示測試數(shù)據(jù)的組數(shù)。
對于每組測試數(shù)據(jù),第一行包括一個整數(shù)N(0<N<=1000),表示要讀取的數(shù)據(jù)的數(shù)量。之后每行包括兩個整數(shù)T和S(0<T<=1000。0<= S<360),表示每一個數(shù)據(jù)的磁道和扇區(qū),磁道是按升序排列,而且沒有反復(fù)。
Output 對于每組測試數(shù)據(jù),輸出一個整數(shù),表示完畢所有讀取所需的時間。
Sample Input 3 1 1 10 3 1 20 3 30 5 10 2 1 10 2 11
Sample Output 830 4090 1642
第二題是近似算法中的旅行商問題,算法導(dǎo)論上有解說,這個是一個模版題。
點擊這里查看模版題解說。
上代碼: #include <stdio.h>const int inf=1<<20;struct node {int x,y; } points[3005]; int n; int dist(int i,int j) {int ans=points[i].x-points[j].x;if(ans<0)ans=-ans;int t =points[i].y-points[j].y;if(t<0)t=-t;if(360-t<t)t=360-t;return ans*400+t; } int map1[3005][3005]; int does() {map1[1][2] = dist(1,2);for (int j = 3; j <= n; ++j){for (int i = 1; i <= j - 2; ++i){map1[i][j] = map1[i][j - 1] + dist(j - 1,j);}map1[j - 1][j] = inf;for (int k = 1; k <= j - 2; ++k){int temp = map1[k][j - 1] + dist(k,j);if (temp < map1[j - 1][j]){map1[j - 1][j] = temp;}}}map1[n][n] = map1[n - 1][n] + dist(n - 1,n);return map1[n][n]+(n*10)-10; }int main() {int m;while(scanf("%d",&m)!=EOF){while(m--){scanf("%d",&n);points[1].x=0;points[1].y=0;n++;for (int i = 2; i <= n; i++){scanf("%d%d",&points[i].x,&points[i].y);}printf("%d\n",does());}}return 0; }
轉(zhuǎn)載于:https://www.cnblogs.com/xfgnongmin/p/10653740.html
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的2014百度之星资格赛第二题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HDU 2833 WuKong
- 下一篇: POST一下就知道:人生苦短,我用Pyt