当前位置: 首页 > news >正文

义乌做网站的电话国外免费域名申请

义乌做网站的电话,国外免费域名申请,网站服务器架设,绵阳市建设银行网站题目描述 Description小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题。一次素质拓展活动中,班上同学安排做成一个m行n列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,因此,他们就无法直接交谈了。幸运的…

题目描述 Description

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

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

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

输入描述 Input Description

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

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

输出描述 Output Description

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

样例输入 Sample Input

3 3

0 3 9

2 8 5

5 7 0

样例输出 Sample Output

34

数据范围及提示 Data Size & Hint

30%的数据满足:1<=m,n<=10

100%的数据满足:1<=m,n<=50

题目说找来回两条不相交路径,其实也可以等价为从(1,1)到(n,m)的两条不相交路径。

如果是只找一条,那又回到了最经典的 dp[i][j] = max(dp[i-1][j],dp[i][j-1]) + a[i][j]。

现在找两条,可以先把数组开到四维。

dp[x1][y1][x2][y2] = max{  dp[x1][y1-1][x2][y2-1],

 dp[x1-1][y1][x2-1][y2],

 dp[x1-1][y1][x2][y2-1],

 dp[x1][y1-1][x2-1][y2]

  }

+ a[x1][y1] + a[x2][y2]


要两条路径不能相交,也就是dp[x][y][x][y]属于非法状态,判断一下不能经过此状态即可。

最简单的方法是令x2>x1,因为dp[x1][y1][x2][y2]与dp[x2][y2][x1][y1]是等价的。


由于m和n最大到50,开四维的数组太大,当中有很多重复和浪费。

脑补一下,两张纸条同时传的话,同一时刻它们穿过的人数是相同的,根据这点可以进行降维。

令d[i][x1][x2]表示第i步两张纸条的x坐标分别是x1和x2,则y1=i-x1+2,y2=i-x2+2。

这样就可以得出dp方程

d[i][x1][x2] = max{ d[i-1][x1][x2], d[i-1][x1-1][x2], d[i-1][x1][x2-1], d[i-1][x1-1][x2-1] }

+ a[x1][i-x1+2] + a[x2][i-x2+2]

注意答案d[n+m-2][n][n]要特算(因为这属于"不合法状态")


#include<iostream>
#include<cassert>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<string>
#include<iterator>
#include<cstdlib>
#include<vector>
#include<stack>
#include<map>
#include<set>
using namespace std;
#define rep(i,f,t) for(int i = (f),_end_=(t); i <= _end_; ++i)
#define rep2(i,f,t) for(int i = (f),_end_=(t); i < _end_; ++i)
#define dep(i,f,t) for(int i = (f),_end_=(t); i >= _end_; --i)
#define dep2(i,f,t) for(int i = (f),_end_=(t); i > _end_; --i)
#define clr(c, x) memset(c, x, sizeof(c) )
typedef long long int64;
const int INF = 0x5f5f5f5f;
const double eps = 1e-8;//*****************************************************int d[100][55][55];
int a[55][55];inline int max(int i,int j,int k,int l)
{return max(max(i,j),max(k,l));
}
int main()
{int n,m;scanf("%d%d",&n,&m);rep(i,1,n)rep(j,1,m)scanf("%d",&a[i][j]);rep(i,1,n+m-2)rep(x1,max(1,i+2-m),min(n,i+1)){int y1 = i - x1 + 2;rep(x2,max(x1+1,i+2-m), min(n,i+1)){int y2 = i - x2 + 2;d[i][x1][x2] = max(d[i-1][x1-1][x2-1], d[i-1][x1][x2-1],d[i-1][x1-1][x2],d[i-1][x1][x2])+ a[x1][y1] + a[x2][y2];}}d[n+m-2][n][n] = d[n+m-3][n-1][n];cout<<d[n+m-2][n][n]<<endl;   //直接输出d[n+m-3][n-1][n]即可return 0;
}




版权声明:本文为博主原创文章,未经博主允许不得转载。

转载于:https://www.cnblogs.com/DSChan/p/4862019.html

http://www.wooajung.com/news/35116.html

相关文章:

  • 淘宝网站建设百度网络电话
  • 重庆玖玺国际做网站百度推广登录平台登录
  • ps做网站首页设计教程必应站长平台
  • 怎么做同城购物网站山西seo谷歌关键词优化工具
  • 西湖南昌网站建设公司谷歌收录提交入口
  • 网站流量 龙优化软件网站建设公司苏州
  • 怎么弄数据库备份做网站seo公司上海
  • 企业网站建设 价格青岛seo霸屏
  • 网站建设地带精准营销及推广
  • wordpress页面修改插件湖南seo服务
  • 华为云网站建设怎么设置选择项情感链接
  • 专业网站开发友情链接怎么弄
  • 私募网站建设网站seo视频
  • 亚马逊产品备案网站建设要求新闻稿代写
  • 怎样在谷歌上建设网站网站关键词怎么快速上排名
  • wordpress适合建什么网站开网站需要投资多少钱
  • 会员管理系统软件排名百度优化seo
  • 网站建设 任务网站怎么宣传
  • 土木工程毕设代做网站国外免费建站网站
  • 阿里云备案网站 网站名称怎么写快手seo
  • 荔湾做网站公分发平台
  • 贵州省城乡和住房建设厅网站seo是指什么岗位
  • 手机网站怎么改成电脑版关键词数据分析
  • 在线做动漫图的网站网络营销属于哪个专业
  • 阿里备案成功后怎么做网站官网设计公司
  • 智慧团建网站网址放心网站推广优化咨询
  • 网站有哪些费用多少武汉久都seo
  • 网站建设系统网站自助建站系统铜川网络推广
  • 网站建设付款方式百度智能云建站
  • 章丘网站建设如何搭建自己的网站