【动态规划】mr351-办签证
【题目大意】
xuzhenyi要办个签证。办证处是一座M层的大楼,1<=M<=100。
每层楼都有N个办公室,编号为1..N(1<=N<=500)。每个办公室有一个签证员。
签证需要让第M层的某个签证员盖章才有效。
每个签证员都要满足下面三个条件之一才会给xuzhenyi盖章:
1. 这个签证员在1楼。
2. xuzhenyi的签证已经给这个签证员的正楼下(房间号相同)的签证员盖过章了。
3. xuzhenyi的签证已经给这个签证员的相邻房间(房间号相差1,楼层相同)的签证员盖过章了。
每个签证员盖章都要收取一定费用,这个费用不超过1000000000。
找出费用最小的盖章路线,使签证生效。
第1行两个整数M和N。
接下来M行每行N个整数,第i行第j个数表示第i层的第j个签证员收取的费用。
输出第1行为Min=最小费用。从第2行起按顺序输出你经过的房间的编号,每行一个数。
如果有多条费用最小的路线,输出任意一条。
样例输入 Sample Input
3 4
10 10 1 10
2 2 2 10
1 10 10 10
样例输出 Sample Output
Min=8
3
3
2
1
1
【思路】
简单动态规划,初始化第一层房间均为本房间签证价格,对于二层及以上的每一个房间,有三种可能性:
(1)从正楼下房间走上去,作为所有房间mincost数组的初始化。
(2)从左侧相邻房间走过来,从每层第二个房间开始,从左往右扫描。
(3)从右侧相邻房间走过来,从每层倒数第二个房间开始,从右往左扫描。
用path数组记录每间房间取到最小的价格时,是从哪一层的哪一个房间走过来的,然后倒序输出即可。
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
const int MAXm=+;
const int MAXn=+;
struct node
{
int x,y;
};
int m,n;
long long cost[MAXm][MAXn];
long long mincost[MAXm][MAXn];
node path[MAXm][MAXn]; void init()
{
scanf("%d%d",&m,&n);
for (int i=;i<m;i++)
for (int j=;j<n;j++)
scanf("%d",&cost[i][j]);
} void dp()
{
for (int i=;i<n;i++)
{
mincost[][i]=cost[][i];
path[][i].x=-;
path[][i].y=-;
}
for (int i=;i<m;i++)
{
for (int j=;j<n;j++)
{
mincost[i][j]=mincost[i-][j]+cost[i][j];
path[i][j].x=i-;
path[i][j].y=j;
}
for (int j=;j<n;j++)
if (mincost[i][j]>mincost[i][j-]+cost[i][j])
{
mincost[i][j]=mincost[i][j-]+cost[i][j];
path[i][j].x=i;
path[i][j].y=j-;
}
for (int j=n-;j>=;j--)
if (mincost[i][j]>mincost[i][j+]+cost[i][j])
{
mincost[i][j]=mincost[i][j+]+cost[i][j];
path[i][j].x=i;
path[i][j].y=j+;
}
}
} void print()
{
int ans=;
for (int i=;i<n;i++) if (mincost[m-][i]<=mincost[m-][ans]) ans=i;
cout<<"Min="<<mincost[m-][ans]<<endl;
int nowx=m-,nowy=ans;
int anspath[MAXm*MAXn],t=-;
while (nowx!=-)
{
t++;
anspath[t]=nowy;
node next=path[nowx][nowy];
nowx=next.x;
nowy=next.y;
}
for (int i=t;i>=;i--) cout<<anspath[i]+<<endl;
} int main()
{
freopen("mr351.in5","r",stdin);
freopen("mr351.ou5","w",stdout);
init();
dp();
print();
return ;
}
【动态规划】mr351-办签证的更多相关文章
- 程序猿老公去米国参加 WWDC,顺便想带渡老婆蜜月,如何办签证?
这个问题要拆开描述比较好:1. 老公是苹果开发者,抽中了2014 WWDC购票机会,打算自费去参加.如果自己成行,应该办何种签证?2. 顺带,两人新婚半年还未安排蜜月,打算提前几天过去先游览一下西海岸 ...
- word20170104办签证 Visa application有用的词和句子
有用的词:visa category: 签证类型tourist visa: 旅游签证visa interview: 签证面试multiple entries: 多次往返visa on arrival: ...
- Web 软件测试 Checklist 应用系列,第 1 部分: 数据输入
Web 软件测试 Checklist 应用系列,第 1 部分: 数据输入 本文为系列文章"Web 软件测试 Checklist 应用系列"中的第一篇.该系列文章旨在阐述 Check ...
- 面试体验:Facebook 篇(转)
http://www.cnblogs.com/cathsfz/archive/2012/11/05/facebook-interview-experience.html 2012-11-05 08:2 ...
- Google, FaceBook, Amazon 加州求职记 (转)
http://blog.csdn.net/ithomer/article/details/8774006 http://www.myvisajobs.com 一年多前,出于显而易见的原因,下定决心肉身 ...
- 微信小程序推荐
工具类 快递100助手:查快递,寄快递. 驾考帮手:为您提供科目一.科目四的测试题练习. 翻译e:多国语言在线翻译,中英.中日.中俄.中法快速翻译,专业翻译. 朝夕日历Pro:一个日历管理 app,你 ...
- [日推荐] 『闲聊助手』人工智能小程序,仅此一款!-极乐商店store.dreawer.com
肾phone的siri有用过吗?小编无聊时就撩一下她!但有个问题就是要是没有肾phone在身边怎么撩???现在有伙伴@wx_Volcano_Li76 开发一款小程序,可以等同于siri,想什么时候撩就 ...
- [日推荐] 『Streeter』极乐商店邀你一起来尬舞啊!-store.dreawer.com
你听的舞蹈有哪些?Jazz?Poppin?Hiphop?现代舞?民族舞?... 今天推荐一款小程序『Streeter』,几乎包含所有舞蹈视频,偷偷学好了,邀请你来尬舞啊 Streeter 这个Logo ...
- 微信小程序周报(第十三期)-极乐商店(store.dreawer.com)出品
重要:极乐商店域名变更:wxapp.dreawer.com/变更为store.dreawer.com/ 每周一笑 当年刚学打篮球的时候,疯狂地迷恋上了乔丹,然后迷恋上了NIKE,更熟记了NIKE的那句 ...
随机推荐
- 分布式队列Celery
Celery是什么? Celery 是一个由 Python 编写的简单.灵活.可靠的用来处理大量信息的分布式系统,它同时提供操作和维护分布式系统所需的工具. Celery 专注于实时任务处理,支持任务 ...
- python实战===爬取所有微信好友的信息
''' 爬取所有T信好友的信息 ''' import itchat from pandas import DataFrame itchat.login() friends=itchat.get_fri ...
- python基础===open()文件处理使用介绍
本文转自:Python open()文件处理使用介绍 1. open()语法open(file[, mode[, buffering[, encoding[, errors[, newline[, c ...
- 用Python写个自动ssh登录远程服务器的小工具
很多时候我们喜欢在自己电脑的终端直接ssh连接Linux服务器,而不喜欢使用那些有UI界面的工具区连接我们的服务器.可是在终端使用ssh我们每次都需要输入账号和密码,这也是一个烦恼,所以我们可以简单的 ...
- hdu 2389(二分图hk算法模板)
Rain on your Parade Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 655350/165535 K (Java/Ot ...
- 走进 Prism for Xamarin.Forms
一.使用环境 OS:Win 10 16273 VS:VS2017- 15.3.4 Xamarin:4.6.3.4,nuget:2.4 Android Emulator:Visual Studio fo ...
- 2t3ik、ddgs与Linux异常文件下载处理
异常1: 这样的邮件发生了两周了,烦得很.进入服务器,用top看来下进程. 解决办法 首先 kill 相关PID 进入/tmp/ 删除相关文件 rm -rf 2t3ik相关文件 不给相关文件修改权 ...
- String的hashCode分析
/** * Returns a hash code for this string. The hash code for a * {@code String} object is computed a ...
- codeforces 360 B
B - Levko and Array 题目大意:给你你个长度为n的数列a,你最多改变k个值,max{ abs ( a[ i + 1] - a[ i ] ) } 的最小值为多少. 思路:这个题很难想到 ...
- rpm包管理和源码包管理
(1)软件类型 源码包 需要gcc编译 nginx-1.12.1.tar.gz 二进制包 已编译 mysql-community-common-5.7.12-1.el7.x86_64.rpm 常见的二 ...