美文网首页
你又忘了初始化!!丢人!!!你反省一下!!!

你又忘了初始化!!丢人!!!你反省一下!!!

作者: zilla | 来源:发表于2019-08-09 15:06 被阅读0次

1072 Gas Station (30 分)

出错先检查初始化、题意理解

有事儿没事儿记得初始化!!!

记得初始化!!!

初始化!!!

尤其是全局变量多次当新的用,用之前初始化!!

怎么肥四初始化一次就没在用了又当新的用之前初始化了???

什么INF、0、-1、false

为一句total = 0自闭大半天值得吗???

#include <cstdio>
#include <cstring>
#include <algorithm>

#define INF 0x3fffffff
using namespace std;
int NHouse, NGas, mm, max_range, max_min = -1, best = -1;
int total, best_total;
int graph[1050][1050];

int str2int(char str[]) {
    int temp = 0, size = strlen(str), first = 0, wei = 1;
    if (str[0] == 'G') first = 1;
    for (int i = size - 1; i >= first; --i) {
        temp += (wei * (str[i] - '0'));
        wei *= 10;
    }
    if (first) temp += 1000;
    return temp;
}

int Dijkstra(int src) {
    int dist[1050];
    bool visited[1050] = {false};
    fill(visited, visited + 1050, false);
    fill(dist, dist + 1050, INF);
    dist[src] = 0;
    for (int i = 0; i < NHouse + NGas; ++i) {
        int mDist = INF, index = -1;
        for (int j = 1; j <= 1000 + NGas; ++j) {
            if (!visited[j] && dist[j] < mDist) {
                mDist = dist[j], index = j;
            }
            if (j == NHouse) j = 1000;
        }
        if (index != -1) {
            visited[index] = true;
            for (int j = 1; j <= 1000 + NGas; ++j) {
                if (!visited[j] && graph[index][j] != INF) {
                    int newd = dist[index] + graph[index][j];
                    if (newd < dist[j]) dist[j] = newd;
                }
                if (j == NHouse) j = 1000;
            }
        } else return -1;
    }
    int min_dist = INF;
    total = 0;
    for (int k = 1; k <= NHouse; ++k) {
        if (dist[k] > max_range) return -1;
        if (dist[k] < min_dist) {
            min_dist = dist[k];
        }
        total += dist[k];
    }
    return min_dist;
}

int main() {
    fill(graph[0], graph[0] + 1050 * 1050, INF);
    scanf("%d%d%d%d", &NHouse, &NGas, &mm, &max_range);
    char s1[6], s2[6];
    int v1, v2, weight;
    for (int i = 0; i < mm; ++i) {
        scanf("%s%s%d", s1, s2, &weight);
        v1 = str2int(s1), v2 = str2int(s2);
        graph[v1][v2] = graph[v2][v1] = min(graph[v2][v1], weight);
    }
    for (int i = 0; i < 1050; ++i) graph[i][i] = 0;
    for (int i = 1001; i <= 1000 + NGas; ++i) {
        int temp_min = Dijkstra(i);
        if (temp_min == -1 || temp_min == INF) continue;
        if (temp_min > max_min) {
            max_min = temp_min;
            best = i;
            best_total = total;
        } else if (temp_min == max_min) {
            if (total < best_total) {
                best = i;
                best_total = total;
            } // the gas station with a lower number is preferable
        }
    }
    if (best != -1) {
        printf("G%d\n%d.0 %.1lf\n", best - 1000, max_min, best_total * 1.0 / (NHouse * 1.0));
    } else printf("No Solution\n");
    return 0;
}

相关文章

  • 你又忘了初始化!!丢人!!!你反省一下!!!

    1072 Gas Station (30 分) 出错先检查初始化、题意理解 有事儿没事儿记得初始化!!! 记得初始...

  • 无题

    我又落泪 你又安静踏水 向前坏着好着 我一下就忘了 所有

  • 忘了日更,反省一下

    昨天居然又忘了日更。 情况是大姐一家来做客,上午忙着做饭菜,饭后去做了个美容体验项目,然后陪他俩看望我的公婆,五点...

  • 你已经忘了我了吧

    叶子绿了又黄了你已经忘了我了吧花儿开了又落了你已经忘了我了吧燕子来了又走了你已经忘了我了吧月儿圆了又缺了你已经忘了...

  • 学会和自己和解

    你介意你有不好的过去吗?你做了一件丢人的事,很丢人很丢人,你当下会不会坦然面对自己。 你分手过后会不会继续抱怨,那...

  • 每日一反省

    反省… 又忘了每天该反省,反省昨天做的好的地方,主要是要反省昨天做的不好的地方,以及该如何改正。 首先,昨天的工作...

  • 第三下敲门声

    你是谁? 为什么悄悄的住在我心里? 又始终不肯说话。 我一旦忘了你, 你又敲响我的门。 可是为什么 你每次只敲一下...

  • 让爱融入生活|《非暴力沟通》

    你不丢人,我还嫌丢人呢! 就没见过你这么笨,是人都比你强! 猪脑子,你怎...

  • 《你忘了你忘了》

    你忘了为什么笔记本的左下角会有一滩黑色笔迹 你忘了你的右手第三根手指上为什么会有新月形的伤疤 你忘了下午一点你走在...

  • 自卑与自信的我?

    自卑又自信、骄傲 无论受到怎样的侮辱,别人怎么看不起你,怎么丢人,是的,我也会感到丢人,自卑,但那只是外面的评价,...

网友评论

      本文标题:你又忘了初始化!!丢人!!!你反省一下!!!

      本文链接:https://www.haomeiwen.com/subject/vekhjctx.html