【动态规划】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的那句 ...
随机推荐
- Mimikatz.ps1本地执行
PS C:\Users\hacker> Get-ExecutionPolicy Restricted PS C:\Users\hacker> Set-ExecutionPolicy Unr ...
- HDP-2.6.1安装
1.首先安装HDP的Ambari仓库文件到本机的/etc/yum.repos.d/ambari.repo路径下
- Centos7编译安装Xen环境(vtpm)
编译xen环境(http://www.lvtao.net/server/574.html#comment-1882): yum update yum groupinstall "Develo ...
- linux运维记
nmap 127.0.0.1 命令查看当前服务器对外有多少端口,用于检查漏洞 vim ctrl+z ,jobs,fg 切换控制应用程序 vim 执行命令 #!sh aa.sh执行命令 运维系统监控开源 ...
- 菜鸟进阶之:VC++之Visual Studio中DLL调用实现
C++写的DLL,用C++调用其实是一个比较简单的事情,调用DLL函数的方法其实有很多,说一个最普通的方法: 1.新建一个解决方案,文件->新建项目->Visual c++->win ...
- C基础 工程中常用的排序
引言 - 从最简单的插入排序开始 很久很久以前, 也许都曾学过那些常用的排序算法. 那时候觉得计算机算法还是有点像数学. 可是脑海里常思考同类问题, 那有什么用呢(屌丝实践派对装逼学院派的深情鄙视). ...
- [New learn] 网络基础-网络操作
代码:https://github.com/xufeng79x/NETOperation 1.简介 主要记录基本的网络操作步骤,get/post关系和区别和文件上传实现. 2.准备 需要服务器端,如果 ...
- selenium+python自动化80-文件下载(不弹询问框)【转载】
转至博客:上海-悠悠 前言 上一篇是点弹出框上的按钮去保存文件,本篇介绍一种更加优雅的方法,加载Firefox和Chrome的配置文件,不弹出询问框后台下载. 一.FirefoxProfile 1.点 ...
- php文件上传需要的配置
服务端配置(php.ini) 1.file_uploads=On //支持HTTP上传 2.upload_tmp_dir =”” //临时文件保存的目录 3.upload_max_filesize ...
- 数据结构与算法之--高级排序:shell排序和快速排序
高级排序比简单排序要快的多,简单排序的时间复杂度是O(N^2),希尔(shell)排序大约是O(N*(logN)^2),而快速排序是O(N*logN). 说明:下面以int数组的从小到大排序为例. 希 ...