zoukankan      html  css  js  c++  java
  • 洛谷 P2096 最佳旅游线路

    题目描述

    某旅游区的街道成网格状。其中东西向的街道都是旅游街,南北向的街道都是林阴道。由于游客众多,旅游街被规定为单行道,游客在旅游街上只能从西向东走,在林阴道上则既可从南向北走,也可以从北向南走。

    阿龙想到这个旅游街游玩,他的好友阿福给了他一些建议,用分值表示所有旅游街相邻两个路口之见的街道值得游览的程度,分值是从-100到100的整数,所有林阴道不打分。所有分值不可能全是负分。如图:

    输入输出格式

    输入格式:

     

    输入文件的第一行是两个整数m和n,之间用一个空格隔开,m表示有m条旅游街(1≤m≤100 ),n 表示有(n+1)条林阴道(1≤n≤20001 )。接下来的m行依次给出了由北向南每条旅游街的分值信息。每行有n个整数,依次表示了自西向东旅游街每一小段的分值。同一行相邻两个数之间用一个空格隔开。

     

    输出格式:

     

    输出文件只有一行,是一个整数,表示你的程序找到的最佳游览线路的总分值。

     

    输入输出样例

    输入样例#1: 复制
    3 5 
    -50 -47 36 -30 -23 
    17 -19 -34 -13 -8 
    -42 -3 -43 34 -45 
    
    输出样例#1: 复制
    84
    起点可以不从最左侧开始。
    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    struct nond{
        int num[101];
        int sum;
    }v[20011];
    int tmp[20010];
    int m,n,bns,ans=-100000;
    int main(){
        scanf("%d%d",&m,&n);
        for(int i=1;i<=m;i++)
            for(int j=1;j<=n;j++){
                int x;scanf("%d",&x);
                v[j].num[v[j].sum+1]=x;v[j].sum++;
            }
        for(int i=1;i<=n;i++)    sort(v[i].num+1,v[i].num+1+v[i].sum);
        for(int i=1;i<=n;i++)    tmp[i]=v[i].num[v[i].sum];
        int k,start,end;
        for(int i=1;i<=n;i++){
            bns+=tmp[i];
            if(bns>ans){
                ans=bns;
                start=k;end=i;
            }
            if(bns<0){
                bns=0;k=i+1;
            }
        }
        cout<<ans;
    }
    100
     
  • 相关阅读:
    scala之伴生对象的继承
    scala之伴生对象说明
    “Failed to install the following Android SDK packages as some licences have not been accepted” 错误
    PATH 环境变量重复问题解决
    Ubuntu 18.04 配置java环境
    JDBC的基本使用2
    DCL的基本语法(授权)
    ZJNU 1374
    ZJNU 2184
    ZJNU 1334
  • 原文地址:https://www.cnblogs.com/cangT-Tlan/p/9727443.html
Copyright © 2011-2022 走看看