bitnonic tour

来源:互联网 发布:淘宝购买账号安全吗 编辑:程序博客网 时间:2024/06/05 02:52

磁盘调度

OJ题目:click here~~

学习学习咱们大牛的博文去吧,点~~~

AC_CODE

const int maxn = 1008 ;int y[maxn] ;int dist[maxn][maxn] ;int dp[maxn][maxn] ;int n ;int getDist(int a , int b){    int t = (y[a] >= y[b]) ? (y[a] - y[b]) : (y[b] - y[a]) ;    return min(t , 360 - t) ;}int DP(){    int i , j , k ;    for(i = 1;i <= n;i++)        for(j = 1;j <= i;j++)        dist[i][j] = dist[j][i] = getDist(i , j) ;    dp[2][1] = dist[2][1] ;    for(i = 2;i < n;i++){        for(j = 1;j < i;j++){          dp[i + 1][i] = min(dp[i + 1][i] , dp[i][j] + dist[j][i + 1]) ;          dp[i + 1][j] = min(dp[i + 1][j] , dp[i][j] + dist[i][i + 1]) ;        }    }    int ans = 1 << 30 ;    for(i = 1;i < n;i++)        ans = min(ans , dp[n][i] + dist[i][n]) ;    return ans ;}int main(){    int i , t , T ;    //freopen("in.txt" , "r" , stdin) ;    cin >> t ;    while(t--){        memset(dp , 63 , sizeof(dp)) ;        cin >> n ;        n++ ;        y[1] = 0 ;        for(i = 2;i <= n;i++){            scanf("%d%d",&T , &y[i]) ;        }        int ans ;        ans = 400 * 2 * T + (n - 1) * 10 ;        ans += DP() ;        cout << ans << endl ;    }    return 0 ;}


0 0
原创粉丝点击