zoukankan      html  css  js  c++  java
  • cogs 79. 渡轮问题(输出路径)

    79. 渡轮问题

    ★☆   输入文件:maxxl.in   输出文件:maxxl.out   简单对比
    时间限制:1 s   内存限制:128 MB

    Palmia 河在某国从东向西流过,并把该国分为南北两个部分。河的两岸各有 n 个城市,且北岸的每一个城市都与南岸的某个城市是友好城市,而且对应的关系是一一对应的。现在要求在两个友好城市之间建立一条航线,但由于天气的关系,所有航线都不能相交,因此,就不可能给所有的友好城市建立航线。

    问题:当城市个数和友好关系建立之后,选择一种修建航线的方案,能建最多的航线而不相交。(若有多种方案,修建航线最多且城市数量相同,选择从前到后城市标号字典序小的那种方案.)

    【输入格式】

    输入由若干行组成,第一行有一个整数,n(1≤n≤10000);表示城市数。第2至n+1行依次是南岸城市的北岸友好城市编号。

    【输出格式】

    输出共两行,第一行是建立航线的数量。第二行是建立航线的北岸城市编号。

    【输入样例】

    输入文件名:maxxl.in

    14
    13
    7
    9
    16
    38
    24
    37
    18
    44
    19
    21
    22
    63
    15

    【输出样例】

    输出文件名:maxxl.out

    8
    7 9 16 18 19 21 22 63

    #include<iostream>
    #include<cstdio>
    #define maxn 10010 
    using namespace std;
    int a[maxn],f[maxn],pre[maxn];
    int main()
    {
        freopen("maxxl.in","r",stdin);
        freopen("maxxl.out","w",stdout);
        int n,i,j,k;
        scanf("%d",&n);
        for(i=1;i<=n;i++)
        {
            scanf("%d",&a[i]);
            f[i]=1;
            pre[i]=i;
        }
        for(i=1;i<=n;i++)
        {
            for(j=i+1;j<=n;j++)
            {
                if(a[j]>=a[i]&&f[j]<=f[i]+1)
                {
                    if(f[j]<f[i]+1)
                    {
                        f[j]=f[i]+1;
                        pre[j]=i;
                    }
                    else
                    pre[j]=min(pre[j],i);
                }
            }
        }
        int maxx=0;
        for(i=1;i<=n;i++)
        if(f[i]>maxx)
        {
            k=i;
            maxx=f[i];
        }
        printf("%d
    ",maxx);
        int b[maxn],l=0;
        while(k!=pre[k])
        {
            b[++l]=a[k];
            k=pre[k];
        }
        b[++l]=a[k];
        for(i=maxx;i>=1;i--)
        printf("%d ",b[i]);
        return 0;
    }
     
  • 相关阅读:
    安装Mysql或者msi文件时遇到2502/2503错误
    学习Redis之set集合类型详解
    学习Redis之List列表类型详解
    学习Redis之String字符串类型详解
    学习Redis之redis的基础知识
    学习Redis之Benchmark性能测试
    学习Redis之什么是Redis
    学习Redis之为什么要使用Nosql
    Java基础之使用多线程处理多客户端请求
    代码层实现质量属性战术
  • 原文地址:https://www.cnblogs.com/dingmenghao/p/5563223.html
Copyright © 2011-2022 走看看