洛谷 1006 传纸条

题目描述

小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题。一次素质拓展活动中,班上同学安排做成一个m行n列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,因此,他们就无法直接交谈了。幸运的是,他们可以通过传纸条来进行交流。纸条要经由许多同学传到对方手里,小渊坐在矩阵的左上角,坐标(1,1),小轩坐在矩阵的右下角,坐标(m,n)。从小渊传到小轩的纸条只可以向下或者向右传递,从小轩传给小渊的纸条只可以向上或者向左传递。

在活动进行中,小渊希望给小轩传递一张纸条,同时希望小轩给他回复。班里每个同学都可以帮他们传递,但只会帮他们一次,也就是说如果此人在小渊递给小轩纸条的时候帮忙,那么在小轩递给小渊的时候就不会再帮忙。反之亦然。

还有一件事情需要注意,全班每个同学愿意帮忙的好感度有高有低(注意:小渊和小轩的好心程度没有定义,输入时用0表示),可以用一个0-100的自然数来表示,数越大表示越好心。小渊和小轩希望尽可能找好心程度高的同学来帮忙传纸条,即找到来回两条传递路径,使得这两条路径上同学的好心程度只和最大。现在,请你帮助小渊和小轩找到这样的两条路径。

输入格式:

输入文件message.in的第一行有2个用空格隔开的整数m和n,表示班里有m行n列(1<=m,n<=50)。

接下来的m行是一个m*n的矩阵,矩阵中第i行j列的整数表示坐在第i行j列的学生的好心程度。每行的n个整数之间用空格隔开。

输出格式:

输出文件message.out共一行,包含一个整数,表示来回两条路上参与传递纸条的学生的好心程度之和的最大值。

这道题首先我们可以改变一下题意,即从一个起点出发向终点行走,使得两条路没有交点。那么求出一条值加和最大的路作为的dp的基础题肯定很容易,那么如何求两条路呢。其实,仍然可以使用求一条路的方法进行递推dp[x1][y1][x2][y2]表示第一条路与第二条路当前的坐标,根据求一条路最大值的方法很容易得到dp方程为dp[i][j][k][o]=max(max(dp[i-1][j][k-1][o],dp[i-1][j][k][o-1]),max(dp[i][j-1][k-1][o],dp[i][j-1][k][o-1]))+a[i][j]+a[o][k];;特别的x1=x2,y1=y2 时,只需要加一个就好了。特殊情况可归类为下面两种情况,其他都可以根据这两种得到证明。

当两条路径有一个交点时,由于B点只计算了一次,我们必然会找到一条维持上面的路径1不变,而下面的路径2维持B左边与下面两点A,D不动,而走C的一条道路,此时有ABCD四点的和,而开始只有ABD三点,答案一定不会更差。



在两条线有两个交点时如图蓝线与红线,那么可看做棕色线与黄线,即可通过情况1证明,经过少算一次交点之后,这种情况一定不是最优,更多交点也可以此证明。

下附AC代码。

#include<iostream>
#define maxn 55
using namespace std;
int dp[maxn][maxn][maxn][maxn];
int a[maxn][maxn];
int m,n;
int main()
{cin>>m>>n;for(int i=1;i<=m;i++)for(int j=1;j<=n;j++){cin>>a[i][j];}for(int i=1;i<=m;i++)for(int j=1;j<=n;j++)for(int k=1;k<=m;k++)for(int o=1;o<=n;o++){dp[i][j][k][o]=max(max(dp[i-1][j][k-1][o],dp[i-1][j][k][o-1]),max(dp[i][j-1][k-1][o],dp[i][j-1][k][o-1]));dp[i][j][k][o]+=a[i][j];if(i!=k || j!=o){dp[i][j][k][o]+=a[k][o];}}cout<<dp[m][n][m][n]<<endl;
}



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/28939.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

传纸条oj

传纸条 Time Limit: 1000MS Memory Limit: 65536KB Problem Description 传纸条是一种在课堂上传递信息的老方法&#xff0c;虽然现在手机短信和QQ聊天越来越普及&#xff0c;但是手写的信息会让人感到一种亲切感。对许多学生而言&#xff0c;在学校里传递一些私秘性的信息是一…

SDUT OJ 传纸条

传纸条 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Problem Description 传纸条是一种在课堂上传递信息的老方法&#xff0c;虽然现在手机短信和QQ聊天越来越普及&#xff0c;但是手写的信息会让人感到一种亲切感。对许多学生而言&#xff0c;在学校里…

碎纸条拼接复原

有一份文字文件被纵向切割成为19条碎纸条&#xff0c;文字为中文&#xff0c;现通过计算机编程计算将其还原。图片切割如图所示&#xff1a; 这个问题可以理解为碎纸条排列成一个序列&#xff0c;要使得碎纸条与碎纸条之间的差异最小。在这个问题中&#xff0c;可以将每张碎纸条…

以计算机为主题的作文500字,玩电脑作文500字(精选10篇)

玩电脑作文500字(精选10篇) 在日常学习、工作抑或是生活中&#xff0c;大家一定都接触过作文吧&#xff0c;作文是经过人的思想考虑和语言组织&#xff0c;通过文字来表达一个主题意义的记叙方法。你写作文时总是无从下笔&#xff1f;下面是小编整理的玩电脑作文500字(精选10篇…

一堂难忘的计算机课作文,难忘的一堂课作文7篇

难忘的一堂课作文7篇 课堂是我们获取知识的重要一个途径&#xff0c;各位&#xff0c;我们看看下面的难忘的一堂课高中作文&#xff0c;欢迎阅读。 难忘的一堂课作文一 “叮铃铃……”上课铃响了&#xff0c;同学们都坐到自己的位置上。看看课程表&#xff0c;这节课是语文课&a…

传纸条

ContestsProblemsRanklistStatus 17120581088Logout 传纸条 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 传纸条是一种在课堂上传递信息的老方法&#xff0c;虽然现在手机短信和QQ聊天越来越普及&#xff0c;但是手写的信息会让人感到一…

我有一个计算机梦想作文500,我有一个梦想作文500字(精选3篇)

我有一个梦想作文500字(精选3篇) 在平平淡淡的日常中&#xff0c;大家都经常接触到作文吧&#xff0c;作文是人们把记忆中所存储的有关知识、经验和思想用书面形式表达出来的记叙方式。那么问题来了&#xff0c;到底应如何写一篇优秀的作文呢&#xff1f;以下是小编整理的我有一…

一节计算机课作文500,难忘的一堂课作文500字5篇

难忘的一堂课作文500字5篇 上学以来,每一天我们都在上课,学校的课,人生的课,总有那么一些课让我们难忘。下面就是小编整理的难忘的一堂课作文500字,一起来看一下吧。 难忘的一堂课作文500字1 记得在二年级下学期的时候,一天下午,上语文课,刘老师一进教室就说:“同学们…

275. 传纸条

和方格取数的分析一样 #include <iostream> #include <algorithm> using namespace std; const int N55; int dp[2*N][N][N]; int a[N][N]; int main() {int m,n;cin>>m>>n;//注意和方格取数不同的点在于是一个矩形不是正方形for(int i1;i<m;i)for…

作文纸条APP分析

基于官网下的的apk&#xff0c;版本号是v4.2.1 静态代码分析 注&#xff1a;使用apktool反译apk 从AndroidManifest分析 多Activity的UI架构&#xff0c;每次个模块的主界面都是一个独立的Activity 接入了友盟SDK&#xff0c;至少使用了友盟分享与帐号登录组件 使用了阿里云…

调教LLaMA类模型没那么难,LoRA将模型微调缩减到几小时

选自Lightning AI 作者&#xff1a;Sebastian Raschka机器之心编译编辑&#xff1a;赵阳 LoRA 微调方法&#xff0c;随着大模型的出现而走红。 进NLP群—>加入NLP交流群 最近几个月&#xff0c;ChatGPT 等一系列大语言模型&#xff08;LLM&#xff09;相继出现&#xff0c;随…

chatgpt赋能python:Python文本清洗——有效管理大数据

Python文本清洗——有效管理大数据 Python是一种高级编程语言&#xff0c;因其简单易用和可扩展性而受到广泛的青睐。Python的强大功能让其成为一款优秀的文本编辑工具&#xff0c;特别是在处理大数据时更是如此。其中&#xff0c;Python文本清洗是将原始数据进行预处理和过滤…

百度回应文心一言被指“套壳”;​比尔·盖茨:AI 的时代已经开启;Apache Flink 1.17 发布|极客头条...

「极客头条」—— 技术人员的新闻圈&#xff01; CSDN 的读者朋友们早上好哇&#xff0c;「极客头条」来啦&#xff0c;快来看今天都有哪些值得我们技术人关注的重要新闻吧。 整理 | 梦依丹 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 一分钟速览新闻点&#…

数字孪生是什么

数字孪生&#xff08;Digital Twins&#xff0c;数字镜像、数字化映射&#xff09;是充分利用物理模型&#xff08;物理对象的数字模型&#xff0c;不一定可视化&#xff0c;不一定是有形的模型&#xff09;、传感器更新、运行历史等数据&#xff0c;集成多学科、多物理量、多尺…

数字孪生技术的实用价值在哪里?用四个案例为你解答

数字孪生技术目前已经广泛应用于农业、工业、教育、交通、医疗等多个领域&#xff0c;参考下面这些实际案例&#xff0c;就能明白数字孪生技术的实用价值了。 智慧农业 在农业上&#xff0c;利用数字孪生技术可以收集当前大棚内的实时温度、湿度等数据&#xff0c;还能利用物联…

数字孪生应用案例及常用技术

数字孪生作为新一代高新技术&#xff0c;结合人工智能、5G、区块链等前沿技术与各产业不断融合深化&#xff0c;有力推动各行业数字化转型的发展&#xff0c;实现智能互联网时代的升级与变革。那么数字孪生运用过程中&#xff0c;常用的技术有哪些呢&#xff1f; 一、建模 目前…

数字孪生技术(数字化双胞胎)

数值建模与仿真、机器学习以及将信息连接起来的物联网、云平台等领域&#xff0c;对这些领域内的数据和应用的集成能力同样是数字化双胞胎的关键技术。当前&#xff0c;数字化双胞胎的应用领域与范畴还在不断发展&#xff0c;以上各个领域的突破都可能会提高数字化双胞胎的实际…

数字孪生常用关键技术,有哪些软件?

数字孪生技术中本质是利用虚拟孪生体建模还原物理世界场景。传统建模技术速度慢、还原度低&#xff0c;而物理世界数据驱动的实时可视化开发门槛高、效率低和开发难度大。利用快速三维建模技术&#xff0c;可以轻松助力虚拟孪生场景的建模和物理世界数据实时驱动的可视化显示难…

一个大屏掌握港口全部信息的数字孪生技术

随着数据可视化技术的不断发展&#xff0c;数据可视化也不断被应用于各个行业&#xff0c;今天为大家介绍数据可视化在水利方面的应用&#xff0c;通过山海鲸可视化的智慧港口模板进行详细说明。 首先为大家介绍一下山海鲸可视化软件&#xff0c;山海鲸可视化是国内近几年新崛…

数字孪生定义、意义及案例

资料全部为网络搜集&#xff01; 数字孪生 定义 数字孪生&#xff08;Digital twin&#xff09;是充分利用物理模型、传感器更新、运行历史等数据&#xff0c;集成多学科、多物理量、多尺度、多概率的仿真过程&#xff0c;在虚拟空间中完成映射&#xff0c;从而反映相对应的…