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

阿龙想到这个旅游街游玩,他的好友阿福给了他一些建议,用分值表示所有旅游街相邻两个路口之见的街道值得游览的程度,分值是从-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

e,边做题,边写题解,大致读了遍题,是道 贪心,
那么我们分析一下题,图大概是下面这个样子:

------------

竖直方向可以随便走嘛,所以求出每一列
的最大值,再做比较就可以了。

------------
but,命运多舛,交了一遍,80分,有两个点过不了,重读遍题发现:对了,不一定要在最右边结束,也不一定在最左边开始,这点很重要,这才AC了此题。
先上代码

------------

八十分版

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
#define ll long long
#define R register
#define mmax 20002
ll n,m,maxx=-0x7fffffff,ans;
ll tu[][mmax],da[mmax];
int main()
{
/*freopen(".in","r",stdin);
freopen(".out","w",stdout);*/
cin>>m>>n;
for(int i=;i<=m;i++)
for(int j=;j<=n;j++)
{
cin>>tu[i][j]; //输入
}
/*for(int i=1;i<=m;i++)
for(int j=1;j<=n;j++)
{
cout<<tu[i][j]<<" ";
}*/ for(int i=;i<=n;i++)
{
maxx=-0x7ffffff;
for(int j=;j<=m;j++)
{
if(tu[j][i]>maxx)//注意i和j的顺序
{
da[i]=tu[j][i];
maxx=tu[j][i];//
} }
}
/*for(int i=1;i<=n;i++)
{
cout<<da[i]<<" ";//最大值
}*/
ll qzh1=,qzh2=;
for(int i=;i<=n;i++)
{
qzh1=qzh2+da[i];
qzh2=qzh1;
if(ans<qzh1) ans=qzh1;
}
cout<<ans<<endl;
/*fclose(stdin);
fclose(stdout);*/
return ;
}

------------
一百分版

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
#define ll long long
#define II int
#define R register
#define mmax 20002
#define inf 0x7ffffff
II n,m,ans;
II tu[][mmax],da[mmax];
II mxsum(II *x){ //最大子串和
II th=;
II mx=;
for(R II i=;i<=n;++i){
th+=x[i];
if(th<)th=;
else if(th>mx)mx=th;
}
return mx;
}
int main()
{
/*freopen(".in","r",stdin);
freopen(".out","w",stdout);*/
cin>>m>>n;
for(int i=;i<=m;i++)
for(int j=;j<=n;j++)
{
cin>>tu[i][j]; //输入
}
for(int i=;i<=n;i++)
{
da[i]=-inf;
for(int j=;j<=m;j++)
if(tu[j][i]>da[i])//注意i和j的顺序
{
da[i]=tu[j][i];、、每列最大值
}
}
cout<<mxsum(da)<<endl;
/*fclose(stdin);
fclose(stdout);*/
return ;
}

就这样了,好好打,别变棕哟QWQ。

洛谷 P2096 最佳旅游线路的更多相关文章

  1. P2096 最佳旅游线路

    最大字段和加贪心 算长了个见识吧 #include<iostream> #include<cstdio> #include<algorithm> using nam ...

  2. [洛谷P2610] [ZJOI2012]旅游

    洛谷题目链接:[ZJOI2012]旅游 题目描述 到了难得的暑假,为了庆祝小白在数学考试中取得的优异成绩,小蓝决定带小白出去旅游~~ 经过一番抉择,两人决定将T国作为他们的目的地.T国的国土可以用一个 ...

  3. 洛谷 P2233 [HNOI]公交车线路

    洛谷 不知道大家做没做过传球游戏,这一题和传球游戏的转移方程几乎一样. 令\(A\)为\(1\)点,\(E\)为\(5\)点,那么\(f[i][j]\)代表第i步走到j的方案数. \[f[i][j]= ...

  4. 洛谷 P1336 最佳课题选择

    P1336 最佳课题选择 题目提供者 yeszy 标签 动态规划 福建省历届夏令营 传送门 难度 尚无评定 题目描述 Matrix67要在下个月交给老师n篇论文,论文的内容可以从m个课题中选择.由于课 ...

  5. 洛谷 P3204 [HNOI2010]公交线路

    题面 luogu 题解 矩阵快速幂\(+dp\) 其实也不是很难 先考虑朴素状压\(dp\) \(f[i][S]\) 表示最慢的车走到了\(i\),\([i, p+i-1]\)的覆盖情况 状态第一位一 ...

  6. 洛谷P4322.最佳团体

    题目大意 一个 \(n(1\leq n\leq 2500)\) 个节点的森林,每个点 \(i\) 有权值 \(s_{i},p_{i}(0<s_{i},p_{i}\leq 10^4)\) 以及父亲 ...

  7. ⌈洛谷1505⌋⌈BZOJ2157⌋⌈国家集训队⌋旅游【树链剖分】

    题目链接 [洛谷] [BZOJ] 题目描述 Ray 乐忠于旅游,这次他来到了T 城.T 城是一个水上城市,一共有 N 个景点,有些景点之间会用一座桥连接.为了方便游客到达每个景点但又为了节约成本,T ...

  8. Bzoj4753/洛谷P4432 [JSOI2016]最佳团体(0/1分数规划+树形DP)

    题面 Bzoj 洛谷 题解 这种求比值最大就是\(0/1\)分数规划的一般模型. 这里用二分法来求解最大比值,接着考虑如何\(check\),这里很明显可以想到用树形背包\(check\),但是时间复 ...

  9. 洛谷P1027 Car的旅行路线

    洛谷P1027 Car的旅行路线 题目描述 又到暑假了,住在城市A的Car想和朋友一起去城市B旅游.她知道每个城市都有四个飞机场,分别位于一个矩形的四个顶点上,同一个城市中两个机场之间有一条笔直的高速 ...

随机推荐

  1. Mycat之日志分析跨分片事务以及存储过程的执行过程

    1 针对成功事务: 过程说明: 1.初始化连接,路由到各个分片 2.开启非阻塞执行更新,然后执行时候每个节点执行2次 3.执行提交,各节点返回commit 4.释放连接,先释放datasource然后 ...

  2. html-select

    <html><head> <title>select选择标签</title> <meta charset="UTF-8"> ...

  3. 在linux中read、write函数

    read函数从打开的设备或文件中读取数据.   #include<</span>unistd.h> ssize_t read(int fd, void *buf, size_t ...

  4. Python文件修改和常用方法

    为了更好地说明接下来的文件修改操作,我们有必要先来学习下文件操作的常用方法. 一.文件处理中的常用方法 #!/usr/bin/env python3 #-*- coding:utf-8 -*- # w ...

  5. C#获取访问者ip和获取本机ip地址

    获取访问者ip: string userIP; // HttpRequest Request = HttpContext.Current.Request; HttpRequest Request = ...

  6. Tarjan的LCA离线算法

    LCA(Least Common Ancestors)是指树结构中两个结点的最低的公共祖先.而LCA算法则是用于求两个结点的LCA.当只需要求一对结点的LCA时,我们很容易可以利用递归算法在O(n)的 ...

  7. APP前端开发时应注意的一些问题

    在做APP前端开发时应注意的一些问题 在整个app开发流程中,app前端开发是一个必不可少的环节,也是一个在app开发过程中重量级的角色.说到这,那么在app应用的前端开发中,又要注意什么问题呢?一. ...

  8. 字符串的查找删除---C++中string.find()函数与string::npos

    给定一个短字符串(不含空格),再给定若干字符串,在这些字符串中删除所含有的短字符串 输入: 输入只有一组数据 输入一个短字符串(不含空格),再输入若干字符串直到文件结束为止 输出: 删除输入的短字符串 ...

  9. SQLServer跨库查询--分布式查询

    出处:http://www.cnblogs.com/doosmile/archive/2012/03/16/2400646.html --用openrowset连接远程SQL或插入数据 --如果只是临 ...

  10. reportng定制修改

    定制目的 最近接口测试和UI自动化测试都有用到reportng来做测试报告的展示,发现了几个不是很方便的地方: 报告没有本地化的选项 主页的测试结果显示的不够清晰 测试详情中的结果是按照名称排列的,想 ...