zy 送画
问题描述
话说在军训的倒数第二天,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 送画的更多相关文章
- 2016.10.5初中部上午NOIP普及组比赛总结
2016.10.5初中部上午NOIP普及组比赛总结 这次的题目出得挺有质量的.但我觉得我更应该努力了. 进度: 比赛:0+20+0+0=20 改题:AC+AC+AC+AC=AK kk的作业 这题我错得 ...
- 基于SignalR的消息推送与二维码描登录实现
1 概要说明 使用微信扫描登录相信大家都不会陌生吧,二维码与手机结合产生了不同应用场景,基于二维码的应用更是比较广泛.为了满足ios.android客户端与web短信平台的结合,特开发了基于Singl ...
- ASP.NET中画图形验证码
context.Response.ContentType = "image/jpeg"; //生成随机的中文验证码 string yzm = "人口手大小多少上中下男女天 ...
- Node学习笔记(三):基于socket.io web版你画我猜(二)
上一篇基础实现的功能是客户端canvas作图,导出dataURL从而实现图片信息推送,下面具体讲下服务端的配置及客户端的配置同步 首先先画一个流程图,讲下大概思路 <canvas id=&quo ...
- Node学习笔记(三):基于socket.io web版你画我猜(一)
经过惨淡的面试,也是知道了自己的不足,刚好最近在学习node,心中便有了做一个web版的你画我猜的想法 首先说下思路,在做准备工作的时候,有两个大概的思路: 1.规定一块div,捕捉鼠标事件,动态生成 ...
- iOS 消息推送(APNs) 傻瓜式教程
也可以去我的简书页面查看这篇文章 首先: 1.做iOS消息推送需要真机测试 2.做iOS消息推送需要有付费的开发者账号 是否继续看帖? 先学习一下相关的知识吧! 因为中途可能会遇到一些问题,这篇文章或 ...
- 在ionic/cordova中使用极光推送插件(jpush)
Stpe1:创建一个项目(此处使用的是tab类型的项目,创建方式可参照我前一篇如何离线创建Ionic1项目) Stpe2:修改项目信息 打开[config.xml]修改下图内容:
- iOS开发笔记10:圆点缩放动画、强制更新、远程推送加语音提醒及UIView截屏
1.使用CAReplicatorLayer制作等待动画 CALayer+CABasicAnimation可以制作很多简单的动画效果,之前的博客中介绍的“两个动画”,一个是利用一张渐变色图片+CABas ...
- 《云中歌》孟石头泡妞大法独家放送,单身汪get起来!!
谁说古代文人雅士只会诗词歌赋.琴棋书画?作为“玉中之王”的公子哥——孟石头泡妞可是个中高手,总结起来都能出一本“泡妞宝典”了,单身的乃们还不赶紧学起来! 第一步:假装自来熟相识,马上开启约会模式 看到 ...
随机推荐
- Codevs 1065 01字符串
1065 01字符串 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 传送门 题目描述 Description 输出仅有0和1组成的长度为n的字符串,并且其中不能含有 ...
- Listview控件实现已选择效果
Winform中用Listview控件实现更新点击选择后已选择效果,如图: 代码如下: private void frmSelect_Load(object sender, EventArgs e) ...
- php批量发送短信或邮件的方案
最近遇到在开发中遇到一个场景,后台管理员批量审核用户时候,需要给用户发送审核通过信息,有人可能会想到用foreach循环发送,一般的短信接口都有调用频率,循环发送,肯定会导致部分信息发送失败,有人说用 ...
- PHP substr截取中文字符出现乱码的问题解疑
我们在使用PHP substr截取中文字符的时候,经常会出现乱码的情况,导致程序无法正常运行,这时怎么引起的呢?通过分析,我们知道,主要是substr可能硬生生的将一个中文字符“锯”成两半.解决办法: ...
- pgsql与mysql 下 varchar类型的数字文本的排序 区别
两者都有cast函数,但使用方法完全不同. 1.在mysql中,cast( value as type) 将value的数据类型转换成type类型,其type可以为 二进制,同带binary前缀的效果 ...
- 【python】dir(__builtins__)查看python中所用BIF(内置函数)
dir(__builtins__)查看python中所用BIF(内置函数)
- WPF2D绘制图形方法
我们先看看效果如何: xaml文件: <Window x:Class="WPF2D绘制图形方法.MainWindow" xmlns="http://schemas. ...
- 改变UITextField placeHolder色彩、字体
改变UITextField placeHolder颜色.字体 我们有时需要定制化UITextField对象的风格,可以添加许多不同的重写方法,来改变文本字段的显示行为.这些方法都会返回一个CGRect ...
- 解决maven打jar包报错 source 1.3 中不支持
问题:maven在进行打包时,报 '请使用-source 5 或者更高版本以启用XX'的信息并导致打包失败. 原因:maven默认的编译插件的java版本较低,导致其不支持例如泛型,注解等用法. 解决 ...
- Swift入门系列--Swift官方文档(2.2)--中文翻译--About Swift 关于Swift
About Swift 关于Swift 官方文档的翻译,仅供参考,本人英语本就不好,边学边翻译,不喜勿喷. Swift is a new programming language for iOS, O ...