澳门威利斯人_威利斯人娱乐「手机版」

来自 网络资讯 2019-11-16 06:11 的文章
当前位置: 澳门威利斯人 > 网络资讯 > 正文

最大值的最小化,解题报告

UVA10048 - 奥迪ophobia(Floyd,最大值的最小化卡塔 尔(阿拉伯语:قطر‎

UVA10048 - 奥迪(Audi卡塔尔ophobia(Floyd,最大值的最小化卡塔 尔(英语:State of Qatar)

UVA10048 - Audiophobia

题目大要:给定一无向图,每条边都有一个权值,未来给你源点和终端,供给您搜索起源到极限途经的边的最大值,需要这些值尽量小,到不断输出no path。

解题思路:在floyd进程中,就可以记录下来。G【i】【j】 = min(G【i】【j】, max(G【i】【k】, G【k】【j】));

代码:

#include 

const int maxn = 105;
const int MAXD = 0x7f7f7f7f;

int C, S, Q;
int G[maxn][maxn];

int min (const int a, const int b) {
    return a < b ? a : b;
}

int max(const int a, const int b) {
    return a > b ? a : b;
}

void init () {

    for (int i = 1; i <= C; i  )
        for (int j = 1; j <= C; j  )
            G[i][j] = (i == j) ? 0: MAXD;
}

void Floyd() {

    for (int k = 1; k <= C; k  )
        for (int i = 1; i <= C; i  )
            for (int j = 1; j <= C; j  ) {
                if (G[i][k] == MAXD || G[k][j] == MAXD)
                    continue;
                G[i][j] = min(G[i][j], max(G[i][k],G[k][j]));
            }
}

int main () {

    int T = 0;
    while (scanf ("%d %d %d", &C, &S, &Q) && (C, S, Q)) {

        if (T)
            printf ("n");

        init();
        int c1, c2, d;
        for (int i = 0; i < S; i  ) {
            scanf("%d %d %d", &c1, &c2, &d);
            G[c1][c2] = G[c2][c1] = d;
        }

        Floyd();

        printf ("Case #%dn",   T);
        while (Q--) {
            scanf ("%d%d", &c1, &c2);
            if (G[c1][c2] == MAXD)
                printf ("no pathn");
            else
                printf ("%dn", G[c1][c2]);
        }
    }
    return 0;
}

- 奥迪(Audi卡塔 尔(阿拉伯语:قطر‎ophobia(Floyd,最大值的最小化)UVA10048 - 奥迪(Audi卡塔尔ophobia(Floyd,最大值的最小化卡塔 尔(阿拉伯语:قطر‎ UVA10048 - 奥迪(Audi卡塔尔国ophobia 标题大要:给定一无向图,每条边都有意气风发...

UVA104Arbitrage(floyd最短路)

 

UVA104Arbitrage(floyd最短路)

UVA104Arbitrage

主题材料大要:
给你两二国家里面包车型大巴汇率,供给您从任何三个国度出发,身上带着1(单位不明卡塔尔,然后回到那些国度时,身上的钱能够> 1.01.还要只要这么的不二等秘书诀有多条的话,希望的到的是最短的门路,而且还会有要求您输出这些最短的路径。

解题思路:
利用floyd能够求出旅游任何二国的能够赢得的最大的金钱,不过不可能获取最短的路径,最短路线的意趣是转载的国家数尽量少。因而要求再加多风姿洒脱维来标识国家i到j,中间经过了p在那之中间的国家到达(包罗i卡塔尔国。那么G【i】【j】【p】 = max (G【i】【j】【p】, G【i】【k】【p - 1】 * G【k】【j】【1】卡塔尔;而且用path【i】【j】【p】记录中间转播的都市。

代码:

#include 
#include 

const int maxn = 30;

int n;
int path[maxn][maxn][maxn];
double table[maxn][maxn][maxn];

void init () {

    memset(table, 0, sizeof(table));
    memset(path, -1, sizeof(path));

    for (int i = 0; i < n; i  )
        for (int j = 0; j < n; j  ) {
            if (i == j) {
                table[i][j][1] = 0;
            }
            else {
                scanf ("%lf", &table[i][j][1]);
            }
        }

}

int floyd (int &p) {

    for (p = 1; p < n; p  )
        for (int k = 0; k < n; k  )
            for (int i = 0; i < n; i  ) 
                for (int j = 0; j < n; j  ) {
                    if (table[i][k][p] * table[k][j][1] > table[i][j][p   1]) {
                        table[i][j][p   1] = table[i][k][p] * table[k][j][1];
                        path[i][j][p   1] = k;
                    }
                    if (i == j && table[i][j][p   1] > 1.01)    
                        return i;
                }
    return -1;
}

void print_path(int start, int end, int p) {
    int next = path[start][end][p];
    if (next == -1)
        return;
    print_path(start, next, p - 1);
    printf("%d ", next   1);
    print_path(next, end, 1);
}

int main () {

    while (scanf ("%d", &n) != EOF) {

        init();

        int p;
        int start = floyd(p);
//      printf ("%dn", start);
        if (start == -1)
            printf ("no arbitrage sequence existsn");
        else {
            printf ("%d ", start   1);
            print_path(start, start, p   1);
            printf ("%dn", start   1);
        }
    }
    return 0;
}

 

UVA104Arbitrage(floyd最短路卡塔 尔(英语:State of Qatar) UVA104Arbitrage 难题大体: 给你两两国度时期的汇率,供给您从其余三个国家出发,身...

难题大要:给定二个有向图。要求把点分为k个集结,使得每二个汇合中的随便两点a, b满足a, b相互不可达到。

浅析:规范的十分小割。最大流就足以。仅仅必要把每边的开销c改为c = c * (|E|

I.Left 4 Dead

剖析:明显的DP。注意s1和s2哪些地点相像并不重大,首要的是有多少个职务差别。退换的时候也如出生龙活虎辙,更正什么地方并不重要。主要的是改造之后有多少个地点分裂。所以用dp[i][j]意味着i次操作之后有j个岗位不一致的情势数,答案就是dp[t][0]。对于dp[i

J.Sister's Noise

dp[i][j m - k - k] = dp[i - 1][j] * C(j, k) * C(n - j, m - k)

2.把某部齿轮从所在组删除,自为意气风发组。但不影响同组其余齿轮的景观与涉及

G.Greedy Driver

3.叩问多个齿轮是同向、反向或无关系(即不在同大器晚成组)

H.Grouping

难点大体:给定二个无向图,供给删除一些边使点p和点q不联网。首先是使费用起码。若有多组解则使删除的边最少。

本文由澳门威利斯人发布于网络资讯,转载请注明出处:最大值的最小化,解题报告

关键词: 澳门威利斯人