codeforces 214 E [Prob 366 E] 一朝不做题,回到解放前。

题目叙述 http://codeforces.com/problemset/problem/366/E 其实就是找 n * m 矩阵中数字 x 和 数字 y 的最远距离。 算法 n * m 的。不知道 cf 上面那些人为啥都好慢。。。 这题说白了就是求最远哈密顿距离。那为啥不用武森的论文呢。 http://www.cppblog.com/sonicmisora/archive/2009/09/14/96143.aspx 枚举每个点,然后用 4 进制分别记录 -i-j , -i+j , i-j , i+j 的最大值和最小值。 然后枚举 9 * 9 看看哪两个相邻的,枚举4进制d,求距离最大值 max 就可以了。 Code http://codeforces.com/contest/366/submission/5228621
const int N = 2009;
int n , m , k , s , a[N][N];
int l[10][4] , r[10][4];
int b[200000];
bool p[10][10];
int main(){
    cin >> n >> m >> k >> s;
    for (int i = 0; i < 10 ; ++i)
    for (int j = 0 ; j < 4 ; ++j){
        l[i][j] = INF;
        r[i][j] = -INF;
    }

    for (int i= 0 ; i < n ; ++i)
    for (int j = 0 ; j < m ; ++j){
        RD(a[i][j]);
        checkMax(r[a[i][j]][0] , -i - j);
        checkMin(l[a[i][j]][0] , -i - j);
        checkMax(r[a[i][j]][1] , i - j);
        checkMin(l[a[i][j]][1] , i - j);
        checkMax(r[a[i][j]][2] , -i + j);
        checkMin(l[a[i][j]][2] , -i + j);
        checkMax(r[a[i][j]][3] , i + j);
        checkMin(l[a[i][j]][3] , i + j);
    }
    for (int i = 0 ; i < s ; ++i){
        RD(b[i]);
        if (i){
                p[b[i]][b[i - 1]] = 1;
                p[b[i - 1]][b[i]] = 1;
        }
    }
    int ans = 0;
    for (int i = 1 ; i <= 9 ; ++i)
        for (int j = 1 ; j <= 9 ; ++j) if (p[i][j]){
            for (int d = 0 ; d < 4 ; ++d){
                checkMax(ans , abs(l[i][d] - r[j][d]));
                checkMax(ans , abs(r[i][d] - l[j][d]));
            }
        }
    OT(ans);
}

还是太弱了 1、今天发现长沙的 D 题,裸抄个模板就过了。。。后悔 2、今天发现长沙的 H 题,当时思路是对的,写残了认为思路错了,就没管。。呵呵。。 3、10mins看 E + 过 E 。 虽然一开始算法是 81nmlog(nm) 也给过了。。1628ms 4、还是太弱了,退役了之后无心打比赛,大一学弟AK 了div2.唉,一朝不做题,回到解放前。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值