小胖办证

题目描述:

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个签证员收取的费用。

输出格式:

按顺序打出你经过的房间的编号,每行一个数。

如果有多条费用最小的路线,输出任意一条。

样例输入:

3 4
10 10 1 10
2 2 2 10
1 10 10 10

样例输出:

3
3
2
1
1

时间限制:1000ms
空间限制:256MByte

思路:

  这道题本质是与数字三角形一样的,区别在于这道题需要记录路径并且要正着dp一次反着dp一次。实际上路径只要用一个二维数组记录每个点的父亲就行。

代码:

#include<bits/stdc++.h>
#define ll long long
using namespace std; struct node{
int x, y;
node() {}
node(int x1, int y_1) : x(x1), y(y_1) {}
}b[][]; int n, m;
ll a[][], f[][]; void out(int x, int y)
{
if(x == || y == ) return ;
out(b[x][y].x, b[x][y].y);
printf("%d\n", y);
} int main()
{
memset(f, 0x3f3f3f3f, sizeof(f));
scanf("%d%d", &n, &m);
for(int i = ; i <= n; i++)
for(int j = ; j <= m; j++)
scanf("%d", &a[i][j]);
for(int i = ; i <= m; i++)
f[][i] = a[][i];
for(int i = ; i <= n; i++)
{
for(int j = ; j <= m; j++)
{
ll n1 = f[i - ][j];
ll n2 = f[i][j - ];
ll n3 = f[i][j + ];
if(n1 <= n2 && n1 <= n3)
{
f[i][j] = n1 + a[i][j];
b[i][j] = node(i - , j);
}
else if(n2 <= n1 && n2 <= n3)
{
f[i][j] = n2 + a[i][j];
b[i][j] = node(i, j - );
}
else
{
f[i][j] = n3 + a[i][j];
b[i][j] = node(i, j + );
}
}
for(int j = m; j >= ; j--)
{
ll n1 = f[i - ][j];
ll n2 = f[i][j - ];
ll n3 = f[i][j + ];
if(n1 <= n2 && n1 <= n3)
{
f[i][j] = n1 + a[i][j];
b[i][j] = node(i - , j);
}
else if(n2 <= n1 && n2 <= n3)
{
f[i][j] = n2 + a[i][j];
b[i][j] = node(i, j - );
}
else
{
f[i][j] = n3 + a[i][j];
b[i][j] = node(i, j + );
}
}
}
ll mi = ;
int c;
for(int i = ; i <= m; i++)
if(f[n][i] < mi)
{
mi = f[n][i];
c = i;
}
out(n, c);
return ;
}

小胖办证 wzoi的更多相关文章

  1. dp式子100个……

    1.        资源问题1-----机器分配问题F[I,j]:=max(f[i-1,k]+w[i,j-k]) 2.        资源问题2------01背包问题F[I,j]:=max(f[i- ...

  2. dp方程

    1.        资源问题1 -----机器分配问题 F[I,j]:=max(f[i-1,k]+w[i,j-k]) 2.        资源问题2 ------01背包问题   F[I,j]:=ma ...

  3. [vijos P1112] 小胖的奇偶

    第一次看到这题怎么也不会想到是并查集题目…星期五第一次看到这题,到今天做出来,实在是废了好多功夫.看了很多人的解题都有same和diff数组,我也写了,后来发现不对啊两个数组的话find函数怎么写呢? ...

  4. 成小胖学习ActiveMQ·基础篇

    过了个春节,回到公司的成小胖变成了成大胖.但是你们千万别以为他那个大肚子里面装的都是肥肉,里面的墨水也多了不少嘞,毕竟成小胖利用春节的半个月时间专心学习并研究了 ActiveMQ,嘿嘿……这不,为了检 ...

  5. test20181007 wzoi

    题意 分析 考场40分 错误的Manacher+dp. 用\(f(i)\)表示\(s_{1 \sim i}\)的最长偶数回文覆盖长度,在Manacher的同时用刷表法转移,每次还要对\(f(i-1)\ ...

  6. wzoi(栈模拟)

    链接:https://ac.nowcoder.com/acm/contest/332/I 来源:牛客网 题目描述 bleaves 最近在 wzoi 上面做题. wzoi 的题目有两种,一种是 noip ...

  7. 王小胖之 Base64编码/解码

    使用场景:编码网址作为URL参数,简单编码或加密数据,下载地址生成或解析. 实现功能:BASE64在线编码和解码. 数据实例:王小胖好啊,王小胖顶呱呱!! ~~ english 123 !@#$%^& ...

  8. 王小胖之 URL编码和解码

    使用场景:程序员使用较多,主要是图个方便,实现很简单 实现功能:URL编码 和URL解码 数据实例: 输入:王小胖好啊,王小胖顶呱呱!! ~~ english 123 !@#$%^&*()_+ ...

  9. Vijos 1144 小胖守皇宫 【树形DP】

    小胖守皇宫 描述 huyichen世子事件后,xuzhenyi成了皇上特聘的御前一品侍卫. 皇宫以午门为起点,直到后宫嫔妃们的寝宫,呈一棵树的形状:某些宫殿间可以互相望见.大内保卫森严,三步一岗,五步 ...

随机推荐

  1. PHP file_put_contents() 函数

    file_put_contents() 函数把一个字符串写入文件中. 与依次调用 fopen(),fwrite() 以及 fclose() 功能一样. 语法如下 file_put_contents(f ...

  2. Java ConcurrentHashMap初始化

    初始化ConcurrentHashMap时可以指定map大小,由于ConcurrentHashMap代码默认大小是2n,这里需要把用户填的大小转换成2n备注:代码基于jdk 1.8.0_91Concu ...

  3. lxml模块(应用xpath技术)

    一.lxml介绍 第三方库lxml是第一款表现出高性能特征的python xml库,天生支持Xpath1.0.XSLT1.0.定制元素类,甚至python风格的数据绑定接口.lxml是通过Cpytho ...

  4. Eclipse中搭建Android开发环境

    一.搭建Android开发环境 准备工作:下载Eclipse.JDK.Android SDK.ADT插件 下载地址:Eclipse:http://www.eclipse.org/downloads/ ...

  5. ArcMap没有工具条和菜单栏的解决方法

    问题: 在安装ArcGIS10后,打开竟然没有菜单栏和工具栏,安装10.1又有,卸了重装10还是没有 解决办法: 在ArcMap的状态栏上双击,在弹出的自定义对话框中,在Toolbars工具栏选择Ma ...

  6. network embedding 需读论文

    Must-read papers on NRL/NE. github: https://github.com/nate-russell/Network-Embedding-Resources NRL: ...

  7. matlab练习程序(Bresenham画线)

    Bresenham画线算图形学中最基础的知识了,可惜我并没有选修过图形学,所有还是有必要熟悉一下. 上一篇用到的画线函数应该算是数值微分法,也是我最常用的一种方法,不过这种方法似乎并不是很好. 这里的 ...

  8. Java Web 常用在线api汇总(不定时更新)

    1.Hibernate API Documentation (3.2.2.ga) http://www.hibernate.org/hib_docs/v3/api/ 2.Spring Framewor ...

  9. IIS10搭建FTP服务

    1.首先是基本搭建 http://jingyan.baidu.com/article/0bc808fc408fa91bd585b94f.html 2.计算机—管理----本地用户和组----本地用户- ...

  10. day005-异常

    1.        异常概念 1.1   异常的继承体系 异常的根类:java.lang.Throwable,其下有两个子类: Java.lang.Error Java.util.Exception  ...