• hdu 1496


    题目分类里说这题是hash,我用深搜加剪枝水过~~不过这道题还真算得上一道好题,思路很多,可以用HASH,题目数据再加强一点就更好了

    深搜代码如下:

    /*
    * hdu1496/linux.c
    * Created on: 2011-8-5
    * Author : ben
    */
    #include
    <stdio.h>
    #include
    <stdlib.h>
    #include
    <string.h>
    #include
    <math.h>

    void work();
    int main() {
    #ifndef ONLINE_JUDGE
    freopen(
    "data.in", "r", stdin);
    #endif
    work();
    return 0;
    }

    int a[4], ans, x[4];

    void dfs(int step) {
    int i, temp;
    x[step]
    = 0;
    while (x[step] < 100) {
    x[step]
    ++;
    if (step < 2) {
    dfs(step
    + 1);
    }
    else {
    temp
    = 0;
    for (i = 0; i < 3; i++) {
    temp
    += a[i] * x[i] * x[i];
    }
    if (temp <= 0 || temp + a[3] * 10000 > 0) {
    continue;
    }
    x[
    3] = sqrt(temp / (-a[3]));
    if (x[3] <= 100 && x[3] * x[3] * a[3] + temp == 0) {
    ans
    ++;
    }
    }
    }
    }

    void work() {
    int i, j;
    while (scanf("%d%d%d%d", &a[0], &a[1], &a[2], &a[3]) == 4) {
    for (i = 0; i < 4; i++) {
    for (j = i + 1; j < 4; j++) {
    if (a[i] < a[j]) {
    a[i]
    = a[i] ^ a[j];
    a[j]
    = a[i] ^ a[j];
    a[i]
    = a[i] ^ a[j];
    }
    }
    }
    if (a[3] > 0 || a[0] < 0) {
    puts(
    "0");
    continue;
    }
    ans
    = 0;
    dfs(
    0);
    printf(
    "%d\n", ans * 16);
    }
    }

    HASH方法代码:

    /*
    * hdu1496/linux.c
    * Created on: 2011-8-5
    * Author : ben
    */
    #include
    <stdio.h>
    #include
    <stdlib.h>
    #include
    <string.h>
    #include
    <math.h>
    void work();
    int main() {
    #ifndef ONLINE_JUDGE
    freopen(
    "data.in", "r", stdin);
    #endif
    work();
    return 0;
    }

    int hash[2000010];
    void work() {
    int a, b, c, d, i, j, count;
    while (scanf("%d %d %d %d", &a, &b, &c, &d) != EOF) {
    if ((a > 0 && b > 0 && c > 0 && d > 0)
    || (a < 0 && b < 0 && c < 0 && d < 0)) {
    puts(
    "0");
    continue;
    }
    memset(hash,
    0, sizeof(hash));
    count
    = 0;
    for (i = 1; i <= 100; i++) {
    for (j = 1; j <= 100; j++) {
    hash[a
    * i * i + b * j * j + 1000000]++;
    }
    }
    for (i = 1; i <= 100; i++) {
    for (j = 1; j <= 100; j++) {
    count
    += hash[1000000 - c * i * i - d * j * j];
    }
    }
    printf(
    "%d\n", 16 * count);
    }
    }
  • 相关阅读:
    YII 视图层的超链接不会正常显示了
    GIT 命令大全详解
    git将一个分支完全覆盖另外一个分支如:stable分支代码完全覆盖brush分支
    MySQL 查询日志
    Yii 数据库查看保存数据时发生的错误
    Hyperledger Fabric(3)通道与组织
    Hyperledger Fabric(2)共识与交易
    Hyperledger Fabric(1)基础架构
    Hyperledger Fabric 环境搭建(2)
    Hyperledger Fabric 环境搭建(1)
  • 原文地址:https://www.cnblogs.com/moonbay/p/2128719.html
Copyright © 2020-2023  润新知