1 条题解

  • -1
    @ 2019-01-01 15:06:55

    一头牛到某一格的最小距离是固定的。它可以朝目标一直走斜线,再走直线。
    如果它的坐标是x,y,目标的坐标是X,Y,那么最小距离是max(abs(X-x),abs(Y-y))。
    对每一头牛,计算出它到每一格的最小距离。
    找出每一格的距离总和的最小值。

    #include<iostream>
    #include<stdlib.h>
    #include<math.h>
    #include<vector>
    using namespace std;
    const int INF=0x7fffffff;
    int N,R,C;
    /*count of steps to grid*/
    vector<vector<int> > map;
    int main()
    {
        cin>>N>>R>>C;
        map.resize(R+1);
        for (int i=1;i<=R;i++)  map[i]=vector<int>(C+1,0);
        for (int i=1;i<=N;i++)
        {
            int x,y;cin>>x>>y;
            for (int j=1;j<=R;j++)
                for (int k=1;k<=C;k++)
                    map[j][k]+=max(abs(j-x),abs(k-y));
        }
        int ans=INF;
        for (int i=1;i<=R;i++)
            for (int j=1;j<=C;j++)  ans=min(ans,map[i][j]);
        cout<<ans<<endl;
    return 0;
    }
    
  • 1

信息

难度
3
分类
(无)
标签
(无)
递交数
40
已通过
23
通过率
58%
被复制
3
上传者