问题描述
话说在军训的倒数第二天,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. Linux系统update-alternatives命令使用

    个人博客地址:http://www.cnblogs.com/wdfwolf3/ update-alternatives是ubuntu系统用来进行软件版本切换的命令.比如系统中有几个版本的jdk,把这些 ...

  2. 简单的GDI+双缓冲的分析与实现

    为什么要使用双缓冲绘制 在进行多图元绘制的时候: 因为是要一个一个画上去,所以每画一个图元,系统就要做一次图形的绘制操作,图形的重绘是很占用资源的,特别当需要重绘的图形数量很多的时候,所造成的消耗就特 ...

  3. Mindjet MindManager 2012 从模板创建出现“Runtime Error pure virtual function call” 解决方法

    我的Mindjet MindManager 2012 Pro也就是MindManager10 在应用模板之后总会显示 Microsoft Visual C++ Runtime Library Runt ...

  4. 读书笔记之 - javascript 设计模式 - 接口、封装和链式调用

    javascript 采用设计模式主要有下面的三方面原因: 可维护性:设计模式有助于降低模块之间的耦合程度.这使代码进行重构和换用不同的模块变得容易,也使程序员在大型项目中合作变得容易. 沟通:设计模 ...

  5. hibernate中一对多 多对多 inverse cascade

    ----------------------------一对多------------------------------------------- inverse属性:是在维护关联关系的时候起作用的 ...

  6. 《Velocity java开发指南》中文版(上)转载

    文章引自:http://sakyone.iteye.com/blog/524289 1.开始入门 Velocity是一基于java语言的模板引擎,使用这个简单.功能强大的开发工具,可以很容易的将数据对 ...

  7. Linux 消息队列编程

    消息队列.信号量以及共享内存被称作 XSI IPC,它们均来自system V的IPC功能,因此具有许多共性. 键和标识符: 内核中的每一种IPC结构(比如信号量.消息队列.共享内存)都用一个非负整数 ...

  8. 【elasticsearch】(1)centos7 使用yum安装elasticsearch 2.X

    前言 elasticsearch(下面称为ES)是一个基于Lucene的搜索服务器(By 百度百科:查看).所以他需要java的环境即jdk,这里提供懒人一键安装方式 # yum install ja ...

  9. 互联网 免费的WebService接口

    winform开发暂告于段落,最近再用webservice写接口,接下来的一段时间应该偏向于此方向. (转)一批的免费webservice接口,没有技术含量,只是写在这里做个记忆 股票行情数据 WEB ...

  10. 不支持关键字: “userid”。

    运行程序提示:不支持关键字: “userid”. 找了很久在一篇博客里面提示web.config数据库字符串链接出错.