zoukankan      html  css  js  c++  java
  • 【hdu1030】“坐标表示法”

    http://acm.hdu.edu.cn/showproblem.php?pid=1030

    算法:以顶点为原点,建立坐标系,一个数可以唯一对应一个三元组(x, y, z),从任意一个点出发走一步,刚好有三种情况,分别对应x, y, z变化1,而其它两个坐标保持不变。因此,求出两个点的坐标分别为(x1, y1, z1), (x2, y2, z2);则它们之间的距离为|x1 - x2| + |y1 - y2| + |z1 - z2|。

    代码如下:

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <cmath>
     5 #include <algorithm>
     6 #include <map>
     7 #include <vector>
     8 #include <stack>
     9 #include <string>
    10 #include <ctime>
    11 #include <queue>
    12 #define mem0(a) memset(a, 0, sizeof(a))
    13 #define mem(a, b) memset(a, b, sizeof(a))
    14 #define lson l, m, rt << 1
    15 #define rson m + 1, r, rt << 1 | 1
    16 #define eps 0.0000001
    17 #define lowbit(x) ((x) & -(x))
    18 #define memc(a, b) memcpy(a, b, sizeof(b))
    19 #define x_x(a) ((a) * (a))
    20 #define LL long long
    21 #define DB double
    22 #define pi 3.14159265359
    23 #define MD 10000007
    24 #define INF maxNum
    25 #define max(a, b) ((a) > (b)? (a) : (b))
    26 using namespace std;
    27 struct Point {
    28         int x, y, z;
    29         Point(int n) {
    30                 int xx = (int)sqrt(n + 0.5);
    31                 if(xx * xx  < n) xx++;
    32                 y = xx;
    33                 z = x = y;
    34                 int p = (y - 1) * (y - 1);
    35                 x -= (n - p) / 2;
    36                 p = y * y + 1;
    37                 z -= (p - n) / 2;
    38         }
    39 };
    40 int main()
    41 {
    42         //freopen("input.txt", "r", stdin);
    43         int a, b;
    44         while(~scanf("%d%d", &a, &b)) {
    45                 Point x(a), y(b);
    46                 int ans = abs(x.x - y.x) + abs(x.y - y.y) + abs(x.z - y.z);
    47                 printf("%d
    ", ans);
    48         }
    49         return 0;
    50 }
    View Code
  • 相关阅读:
    解决PLSQL Developer中文横着显示的问题
    品优购_day06
    品优购_day05
    品优购_day04
    品优购_day03
    品优购_day02
    java 学习中遇到的问题(二)泛型中<? extends T>和<? super T>的区别
    java 学习中遇到的问题(一)方法调用中的值传递和引用传递
    java中的字符串比较
    自学java 第十一章持有对象
  • 原文地址:https://www.cnblogs.com/jklongint/p/4110339.html
Copyright © 2011-2022 走看看