小胖办证

题目描述:

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. HTML行内元素、块状元素和行内块状元素的区分

    HTML 5 的常用元素分类 HTML可以将元素分类方式分为行内元素.块状元素和行内块状元素三种,这三者是可以互相转换的,通过display属性可以实现互相转换 (1)display:inline;转 ...

  2. 使用Gulp压缩IMG

    继续说Gulp压缩img 不会安装Gulp的小伙伴们,就去看我的上一篇吧!内容怎么安装的都有! 1.咱们先来安装任务插件吧: npm install gulp-imagemin --save-dev ...

  3. 编译时提示软件包 javax.servlet.http 不存在 import javax.servlet.http.HttpServletRequest;

    编译时错误:软件包 javax.servlet.http 不存在import javax.servlet.http.HttpServletRequest; 解决办法:把servlet-api.jar加 ...

  4. 快速开始Python/WSGI应用程序

    快速开始Python-wsig应用程序 官方参考文档 安装 uwsgi 安装 pip install uwsgi uwsgi --version # 查看 uwsgi 版本 测试 uwsgi 是否正常 ...

  5. 配置一个高效快速的Git环境

    username and email editor difftool and mergetool alias 可以直接修改~/.gitconfig文件,也可以用命令配置一个可以实际使用的高效的Git环 ...

  6. php之Apache压力测试

    1,测试本机是否已经安装好Apache ①进入自己的Apache目录下面的bin目录,然后执行ab -V.如果返回Apache版本则表示已经装好 2,执行压力测试命令,ab -n 1000(请求总数) ...

  7. Do the Untwist

      Do the Untwist Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  8. GCO团队合作

    队名:GCO 队员:   B20150304116谢冰媛 (组长) B20150304401王粲 B20150304115钟玺琛            B20150304226梁天海          ...

  9. python入门7 字符串操作

    字符串操作 #coding:utf-8 #/usr/bin/python """ 2018-11-03 dinghanhua 字符串操作 ""&quo ...

  10. OC property(声明)

    @interface Student : NSObject { int _age; int _no; float _height; } // 当编译器遇到@property时,会自动展开成getter ...