• bzoj 1193


    大范围贪心, 小范围暴力。。。。。

     1 #include<bits/stdc++.h>
     2 #define LL long long
     3 #define fi first
     4 #define se second
     5 #define mk make_pair
     6 #define pii pair<int,int>
     7 #define piii pair<int, pair<int,int>>
     8 
     9 
    10 using namespace std;
    11 
    12 const int N=20+7;
    13 const int M=1e4+7;
    14 const int inf=0x3f3f3f3f;
    15 const LL INF=0x3f3f3f3f3f3f3f3f;
    16 const int mod=1e9 + 7;
    17 
    18 int n, xp, yp, xs, ys, dx[] = {1, 1, 2, 2, -1, -1, -2, -2}, dy[] = {2, -2, 1, -1, 2, -2, 1, -1}, d[100][100];
    19 bool check(int x, int y) {
    20     if(x < 0 || x >= 30) return false;
    21     if(y < 0 || y >= 30) return false;
    22     if(d[x][y] != inf) return false;
    23     return true;
    24 }
    25 
    26 void bfs() {
    27     queue<pii> que;
    28     que.push(mk(1, 1));
    29     d[1][1] = 0;
    30     while(!que.empty()) {
    31         pii u = que.front(); que.pop();
    32         for(int i = 0; i < 8; i++) {
    33             pii v = mk(u.fi + dx[i], u.se + dy[i]);
    34             if(check(v.fi, v.se)) {
    35                 d[v.fi][v.se] = d[u.fi][u.se] + 1;
    36                 que.push(v);
    37             }
    38         }
    39     }
    40 }
    41 
    42 int main() {
    43     memset(d, inf, sizeof(d));
    44     scanf("%d%d%d%d", &xp, &yp, &xs, &ys);
    45     int x = abs(xp - xs);
    46     int y = abs(yp - ys);
    47     int ans = 0;
    48     bfs();
    49     while(x >= 20 || y >= 20) {
    50         if(x < y) swap(x, y);
    51         x -= 2, y -= 1;
    52         x = abs(x), y = abs(y);
    53         ans++;
    54     }
    55     printf("%d
    ", ans + d[x + 1][y + 1]);
    56     return 0;
    57 }
    58 /*
    59 */
  • 相关阅读:
    ORACLE查询删除重复记录三种方法
    是否可以从一个static方法内部发出对非static方法的调用
    协程(微线程)
    多线程、多进程
    python3.6.5修改print的颜色
    Python之时间和日期模块
    Python之字符(2)
    Python之字符
    python之列表
    Python中的文件操作
  • 原文地址:https://www.cnblogs.com/CJLHY/p/9009119.html
Copyright © 2020-2023  润新知