P2096 最佳旅游线路

https://www.luogu.com.cn/problem/P2096
涉及知识点:贪心
黄色题
 
 
思路:

给定一个 n×m 的矩阵,每列选出一个最大值 a[i] ,然后求 a数列的最大字段和。

思路: 在林荫道上走并不会影响观赏值,所以只要把每列的最大值求出来就行了。


代码:
复制代码
#include <bits/stdc++.h>
using namespace std;
int main(){
    int n,m;
    scanf("%d %lld",&n,&m);
    int t[n+1][m+1];//记录输入的观赏价值。
    int dp[m+1];//记录每列的最大值。
    for(int i=1;i<=n;i++){
           for(int j=1;j<=m;j++) {
              scanf("%d",&t[i][j]);//千万不要边输入边取每列的最大值,很容易将行和列弄混 
          }
       }
    dp[0]=0;
    int maxn;
    for(int j=1;j<=m;j++){
        maxn=-2147483648;// -2147483648是int 的最小值。
        for(int i=1;i<=n;i++){//注意行和列 
            maxn=max(maxn,t[i][j]);//求最大值。
        }
        dp[j]=maxn;
    }
    int z[m+1];
    z[0]=0;
    maxn=-2147483648;
    for(int i=1;i<=m;i++){
        z[i]=max(z[i-1]+dp[i],dp[i]);//参考最大字段和那题。 //加上后一列的最大数或重新开一个新的区间 
        maxn=max(maxn,z[i]);
    }
    printf("%d",maxn);
    return 0;
}
 
复制代码

 

posted @   -イレイナ  阅读(26)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· 易语言 —— 开山篇
点击右上角即可分享
微信分享提示