【动态规划】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的那句 ...
随机推荐
- javascript中=、==与===的区别
1.等号 =赋值运算符,给变量赋值 var a="1"; 2.相等和不相等操作符 相等操作符由==表示,若两个操作数相等,则返回true:不相等操作符由!=表示,若两个操作数不相等 ...
- Part2-HttpClient官方教程-Chapter5-流利的API
5.1. 易于使用的Facade API 使用之前注意引入相应Jar包或者Maven依赖 <dependency> <groupId>org.apache.httpcompon ...
- Vue组件-动态组件
动态组件 通过使用保留的 <component> 元素,动态地绑定到它的 is 特性,可以让多个组件使用同一个挂载点,并动态切换: <div id="app6"& ...
- 手把手教你写Linux设备驱动---中断(三)--workqueue实现(基于友善之臂4412开发板) 【转】
转自:http://blog.csdn.net/morixinguan/article/details/69680909 上节,我们讲到如何来实现tasklet小任务机制 http://blog.cs ...
- 【Educational Codeforces Round 19】
这场edu蛮简单的…… 连道数据结构题都没有…… A.随便质因数分解凑一下即可. #include<bits/stdc++.h> #define N 100005 using namesp ...
- SPOJ Two Paths
Description 给定一个无向图,含有一定的路.从中找出两个最长的路径(每条路径有一些相通路组成)这两个路径不能经过公共的点,求何时二路径的乘积最大. 本题给出的无向图是一棵树,每边权值为1. ...
- 高德地图web 端智能围栏
最近有个项目,需要在web上批量给设备设置智能围栏,设备超出范围报警,查看高德地图webJS API,web端操作案例如,后台判断没有提供源码 <!-- 重点参数:iconStyle --> ...
- node中--save跟--save--dev
--save参数表示将该模块写入dependencies属性, --save-dev表示将该模块写入devDependencies属性. dependencies字段指定了项目运行所依赖的模, d ...
- Science14年的聚类论文——Clustering by fast search and find of density peaks
欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 这是一个比较新的聚类方法(文章中没看见作者对其取名,在这里我姑且称该方法为local density clu ...
- [BZOJ5305][Haoi2018]苹果树 组合数
题目描述 小 C 在自己家的花园里种了一棵苹果树, 树上每个结点都有恰好两个分支. 经过细心的观察, 小 C 发现每一天这棵树都会生长出一个新的结点. 第一天的时候, 果树会长出一个根结点, 以后每一 ...