问题描述
话说在军训的倒数第二天,zy终于下定决心要将画了 10天之久的画像送给他心怡的法
学院mm。但是,他不敢自己一个人去,倒霉的 kk 只能和他一起去了。不过,为了表现的有
诚意,kk和zy不能走在一起,要不然被对方看见就不好了。那么到底要怎么走呢?zy给了
kk 一幅地图,他把学校分成了 n*m 个格子,对于每个格子,zy 写下了一个数字表示他对于
这个格子的好感度(好感度当然是 zy 自己定义的) ,入口在左上角(1,1)点,出口在右下
角(n,m),zy 和 kk 需要从左上角一起出发,在右下角会和,因为 zy 非常害羞,所以中间
kk和zy都只向右或向下走,这样走完全程的时间最短, 但中间两人不能走到同一个格子上。
经过深思熟虑,他决定,需要他和 kk 走的路的好感度总和最大才是最好。现在,zy 和 kk
希望你能告诉他们两个人各自要走那一条路。为了简化问题,你只需告诉他们两个好感度总
和就可以了。你可以假设mm一定会在zy的路上。
 
输入描述
第一行两个整数 n,m。
接下来n行每行 m个整数,每两个整数之间用一个空格隔开。
 
输出描述
一行一个整数表示最大好感度和。注意,起点和终点的好感度值只计入一次。

样例输入
3 4
1 2 3 4
5 6 7 8
9 10 11 12
 
样例输出
71
 
数据范围
2<=n,m<=50。
好感度为10000以内的正整数。

这道题与08年noip传纸条相当相似,虽然我并没有做过传纸条。

我是用递归做的,枚举两个人在一个时间点到的点,

如果相同就返回。

设置坐标0,0为之前已经到了终点,就只需要搜另一个人的路径了,

当某人到了终点时,下一次坐标就会为0,0,也是只需搜另一个人的路径了。

再加记忆数组,过完。

 #include <iostream>
#include <fstream>
#include <cstdlib>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std; ifstream fin("paint.in");
ofstream fout("paint.out"); int cnt_heng=,cnt_lie=;
int jiyi[][][][]={};
int jv[][]; int dp(int he1,int zo1,int he2,int zo2){
if(he1==cnt_heng&&zo1==cnt_lie)
if(he2==cnt_heng&&zo2==cnt_lie)return jv[cnt_heng][cnt_lie];
if(he1==he2&&zo1==zo2)return ;
if(he1>cnt_heng||he2>cnt_heng)return ;
if(zo2>cnt_lie||zo1>cnt_lie)return ;
if(jiyi[he1][zo1][he2][zo2]!=)return jiyi[he1][zo1][he2][zo2];
int a[]={,},b[]={,};
int tem=;
if(he1==cnt_heng&&zo1==cnt_lie){
if(he2==&&zo2==)return ;
for(int x=;x<=;x++)
tem=max(tem,dp(,,he2+a[x],zo2+b[x]));
jiyi[he1][zo1][he2][zo2]=tem+jv[he1][zo1]+jv[he2][zo2];
return tem+jv[cnt_heng][cnt_lie]+jv[he2][zo2];
} if(he2==cnt_heng&&zo2==cnt_lie){
if(he1==&&zo1==)return ;
for(int x=;x<=;x++)
tem=max(tem,dp(he1+a[x],zo1+b[x],,));
jiyi[he1][zo1][he2][zo2]=tem+jv[he1][zo1]+jv[he2][zo2];
return tem+jv[cnt_heng][cnt_lie]+jv[he1][zo1];
}
if(he1==&&zo1==){
for(int x=;x<=;x++)
tem=max(tem,dp(,,he2+a[x],zo2+b[x]));
jiyi[he1][zo1][he2][zo2]=tem+jv[he2][zo2];
return tem+jv[he2][zo2];
}
if(he2==&&zo2==){
for(int x=;x<=;x++)
tem=max(tem,dp(he1+a[x],zo1+b[x],,));
jiyi[he1][zo1][he2][zo2]=tem+jv[he1][zo1];
return tem+jv[he1][zo1];
} for(int x=;x<=;x++)
for(int y=;y<=;y++){
tem=max(tem,dp(he1+a[x],zo1+b[x],he2+a[y],zo2+b[y]));
}
jiyi[he1][zo1][he2][zo2]=tem+jv[he1][zo1]+jv[he2][zo2];
return tem+jv[he1][zo1]+jv[he2][zo2];
} int main(int argc, char** argv) {
fin>>cnt_heng>>cnt_lie;
for(int x=;x<=cnt_heng;x++)
for(int y=;y<=cnt_lie;y++)fin>>jv[x][y]; int ans=dp(,,,);
ans+=jv[][];
cout<<ans;
fout<<ans; return ;
}

zy 送画的更多相关文章

  1. 2016.10.5初中部上午NOIP普及组比赛总结

    2016.10.5初中部上午NOIP普及组比赛总结 这次的题目出得挺有质量的.但我觉得我更应该努力了. 进度: 比赛:0+20+0+0=20 改题:AC+AC+AC+AC=AK kk的作业 这题我错得 ...

  2. 基于SignalR的消息推送与二维码描登录实现

    1 概要说明 使用微信扫描登录相信大家都不会陌生吧,二维码与手机结合产生了不同应用场景,基于二维码的应用更是比较广泛.为了满足ios.android客户端与web短信平台的结合,特开发了基于Singl ...

  3. ASP.NET中画图形验证码

    context.Response.ContentType = "image/jpeg"; //生成随机的中文验证码 string yzm = "人口手大小多少上中下男女天 ...

  4. Node学习笔记(三):基于socket.io web版你画我猜(二)

    上一篇基础实现的功能是客户端canvas作图,导出dataURL从而实现图片信息推送,下面具体讲下服务端的配置及客户端的配置同步 首先先画一个流程图,讲下大概思路 <canvas id=&quo ...

  5. Node学习笔记(三):基于socket.io web版你画我猜(一)

    经过惨淡的面试,也是知道了自己的不足,刚好最近在学习node,心中便有了做一个web版的你画我猜的想法 首先说下思路,在做准备工作的时候,有两个大概的思路: 1.规定一块div,捕捉鼠标事件,动态生成 ...

  6. iOS 消息推送(APNs) 傻瓜式教程

    也可以去我的简书页面查看这篇文章 首先: 1.做iOS消息推送需要真机测试 2.做iOS消息推送需要有付费的开发者账号 是否继续看帖? 先学习一下相关的知识吧! 因为中途可能会遇到一些问题,这篇文章或 ...

  7. 在ionic/cordova中使用极光推送插件(jpush)

    Stpe1:创建一个项目(此处使用的是tab类型的项目,创建方式可参照我前一篇如何离线创建Ionic1项目) Stpe2:修改项目信息 打开[config.xml]修改下图内容:

  8. iOS开发笔记10:圆点缩放动画、强制更新、远程推送加语音提醒及UIView截屏

    1.使用CAReplicatorLayer制作等待动画 CALayer+CABasicAnimation可以制作很多简单的动画效果,之前的博客中介绍的“两个动画”,一个是利用一张渐变色图片+CABas ...

  9. 《云中歌》孟石头泡妞大法独家放送,单身汪get起来!!

    谁说古代文人雅士只会诗词歌赋.琴棋书画?作为“玉中之王”的公子哥——孟石头泡妞可是个中高手,总结起来都能出一本“泡妞宝典”了,单身的乃们还不赶紧学起来! 第一步:假装自来熟相识,马上开启约会模式 看到 ...

随机推荐

  1. 找不好重现的bug的一个小技巧————守株待兔

    最近碰到一个问题就是数据库中偶尔出现一条没有id的数据,可恨的是怎么也找不到重现这个问题的原因,只好换种方式来找了,那么就是我标题所说的守株待兔方法. 因为我发现出现bug的数据库里面的数据有个字段为 ...

  2. php 单引号与双引号区别

    一.单引号与双引号区别 1." "双引号里面的字段会经过编译器解释,然后再当作HTML代码输出. 2.' '单引号里面的不进行解释,直接输出. 从字面意思上就可以看出,单引号比双引 ...

  3. HTML5 程序设计笔记(二)

    Canvas API 1.HTML5 Canvas 概述 1.1 历史 Canvas的概念最初是由苹果公司提出的,用于在Mac OS X WebKit中创建控制板部件(dashboard widget ...

  4. SQL Server2012连接SQL Server2000完美解决方案

    在SQL Server2012中连接其他SQL Server数据库时可以使用以下代码: exec sp_addlinkedserver 'ITSV', '', 'SQLOLEDB', 'serveri ...

  5. 大型情感类电视连续剧--Android高德之旅(3)地图交互

    总要说两句 前两篇讲到了地图的基础显示和地图类型,今天来记录下高德地图交互相关的设置.地图的绘制分很多层,层级的显示需要根据不同的场景来设置.地图的触摸事件也很丰富,有单击.双击.单指拖拽.双指拖拽. ...

  6. 解决VS2015无法调试dotnet core项目

    dotnet core 1.0正式版和VS2015 update3安装后一直无法在VS中正常调试. 错误提示:The debugger's worker process (msvsmon.exe) u ...

  7. ASP.NET MVC轻教程 Step By Step 4——Model、View和Controller

    ASP.NET MVC中的Model(数据模型)主要包括定义数据结构.数据库读写.数据验证等等和对象处理相关的工作. 在解决方案资源管理器中找到Model文件夹,点击右键,添加一个新类,名为“Mess ...

  8. 【 POJ - 3801】Crazy Circuits(有源汇、上下界最小流)

    Description You’ve just built a circuit board for your new robot, and now you need to power it. Your ...

  9. KeilC51使用详解 (三)

    C51强大功能及其高效率的重要体现之一在于其丰富的可直接调用的库函数,多使用库函数使程序代码简单,结构清晰,易于调试和维护,下面介绍C51的库函数系统. 第一节 本征库函数(intrinsic rou ...

  10. wpf 动画

    1动画实现 通过控件的属性 RenderTransform 设置 (1)设置控件的变化类型,如平移变化,旋转变化等,变化起点. (2)根据属性值链接相应的动画类型,如简单动画,关键帧,路径动画以及故事 ...