洛谷 P2083 找人

P2083 找人

题目背景

题目描述

小明要到他的同学家玩,可他只知道他住在某一单元,却不知住在哪个房间。那个单元有N层(1,2……N),每层有M(1,2……M)个房间。

小明会从第一层的某个房间开始找,他找的方式也很特别,每次到了一个房间,如果不是他的同学,他就会询问这人,

然后他就会去那人告诉他的房间号,如果还不是,他就会继续按这个方法找下去,直到找到。当然,他也有可能找不到同学。他的体力也是有限的,他每爬一层楼梯就会消耗V体力值。你的任务就是求找到同学耗费的最少体力值,如果找不到,就输出impossible 。

输入输出格式

输入格式:

共N+1行。

第一行,N,M,V,X,Y(X,Y表示同学只在X层Y房间)

2~N+1行,每行M*2个数字,第i+1行j*2-1个数Ak和j*2个数Ak+1表示住在i层j房间的人提供的信息是Ak层和Ak+1房间。(同学的信息就是自己的房间号)

输出格式:

一个数,即答案。

输入输出样例

输入样例#1: 复制

3 3 2 2 3
1 3 3 3 2 1
2 3 1 1 2 3
1 1 1 2 2 3

输出样例#1: 复制

2

说明

N<=1000,M<=100,V<=50
思路:搜索。

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int n,m,v,x,y;
int ans=0x7f7f7f7f;
int vis[1010][101];
int map[1010][101][2];
void dfs(int i,int j,int sum){
    if(i==x&&j==y){
        ans=min(ans,sum);
        return ;
    }
    if(!vis[map[i][j][0]][map[i][j][1]]){
        vis[map[i][j][0]][map[i][j][1]]=1;
        dfs(map[i][j][0],map[i][j][1],sum+abs(map[i][j][0]-i));
    }
}
int main(){
    scanf("%d%d%d%d%d",&n,&m,&v,&x,&y);
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            scanf("%d%d",&map[i][j][0],&map[i][j][1]);
    for(int i=1;i<=m;i++){
        vis[1][i]=1;dfs(1,i,0);
        memset(vis,0,sizeof(vis));
    }
    if(ans==0x7f7f7f7f)    cout<<"impossible";
    else cout<<ans*v;
}
时间: 2024-08-22 06:40:13

洛谷 P2083 找人的相关文章

洛谷——P2083 找人

P2083 找人 题目背景 无 题目描述 小明要到他的同学家玩,可他只知道他住在某一单元,却不知住在哪个房间.那个单元有N层(1,2……N),每层有M(1,2……M)个房间. 小明会从第一层的某个房间开始找,他找的方式也很特别,每次到了一个房间,如果不是他的同学,他就会询问这人, 然后他就会去那人告诉他的房间号,如果还不是,他就会继续按这个方法找下去,直到找到.当然,他也有可能找不到同学.他的体力也是有限的,他每爬一层楼梯就会消耗V体力值.你的任务就是求找到同学耗费的最少体力值,如果找不到,就输

洛谷 P1509 找啊找啊找GF(复习二维费用背包)

传送门 题目背景 "找啊找啊找GF,找到一个好GF,吃顿饭啊拉拉手,你是我的好GF.再见." "诶,别再见啊..." 七夕...七夕...七夕这个日子,对于sqybi这种单身的菜鸟来说是多么的痛苦...虽然他听着这首叫做"找啊找啊找GF"的歌,他还是很痛苦.为了避免这种痛苦,sqybi决定要给自己找点事情干.他去找到了七夕模拟赛的负责人zmc MM,让她给自己一个出题的任务.经过几天的死缠烂打,zmc MM终于同意了. 但是,拿到这个任务的sqy

P2083 找人

题目背景 无 题目描述 小明要到他的同学家玩,可他只知道他住在某一单元,却不知住在哪个房间.那个单元有N层(1,2……N),每层有M(1,2……M)个房间. 小明会从第一层的某个房间开始找,他找的方式也很特别,每次到了一个房间,如果不是他的同学,他就会询问这人, 然后他就会去那人告诉他的房间号,如果还不是,他就会继续按这个方法找下去,直到找到.当然,他也有可能找不到同学.他的体力也是有限的,他每爬一层楼梯就会消耗V体力值.你的任务就是求找到同学耗费的最少体力值,如果找不到,就输出impossib

洛谷P1469找筷子

题目描述 经过一段时间的紧张筹备,电脑小组的“RP餐厅”终于开业了,这天,经理LXC接到了一个定餐大单,可把大家乐坏了!员工们齐心协力按要求准备好了套餐正准备派送时,突然碰到一个棘手的问题,筷子!CX小朋友找出了餐厅中所有的筷子,但遗憾的是这些筷子长短不一,而我们都知道筷子需要长度一样的才能组成一双,更麻烦的是CX找出来的这些筷子数量为奇数,但是巧合的是,这些筷子中只有一只筷子是落单的,其余都成双,善良的你,可以帮CX找出这只落单的筷子的长度吗? 输入输出格式 输入格式: 第一行读入一个数N,它

洛谷 P1858 多人背包

求01背包前k优解的价值和 输入输出格式 Input/output 输入格式:第一行三个数K.V.N(k<=50,v<=5000,n<=200)接下来每行两个数,表示体积和价值输出格式:前k优解的价值和 解题思路: 这个题刚开始没做出来只能说是因为我没有认真地去看那个叫背包九讲的东西(这里附网址 http://wenku.baidu.com/view/519124da5022aaea998f0f22.html) 背包九讲中第九讲明确给出求次小值及第k小值的办法,做两个队列,b1,b2,用

洛谷 P1469 找筷子 题解

题目传送门 先排序一遍,再一个一个判断是否有偶数个.注意for循环要i+=2. #include<bits/stdc++.h> using namespace std; int n,a[10000010]; int main(){ scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]); sort(a+1,a+n+1); for(int i=1;i<=n;i+=2){ i

洛谷P1774 最接近神的人_NOI导刊2010提高(02)(求逆序对)

To 洛谷.1774 最接近神的人 题目描述 破解了符文之语,小FF开启了通往地下的道路.当他走到最底层时,发现正前方有一扇巨石门,门上雕刻着一幅古代人进行某种活动的图案.而石门上方用古代文写着“神的殿堂”.小FF猜想里面应该就有王室的遗产了.但现在的问题是如何打开这扇门…… 仔细研究后,他发现门上的图案大概是说:古代人认为只有智者才是最容易接近神明的.而最聪明的人往往通过一种仪式选拔出来.仪式大概是指,即将隐退的智者为他的候选人写下一串无序的数字,并让他们进行一种操作,即交换序列中相邻的两个元

洛谷P3398 仓鼠找sugar

题目描述 小仓鼠的和他的基(mei)友(zi)sugar住在地下洞穴中,每个节点的编号为1~n.地下洞穴是一个树形结构.这一天小仓鼠打算从从他的卧室(a)到餐厅(b),而他的基友同时要从他的卧室(c)到图书馆(d).他们都会走最短路径.现在小仓鼠希望知道,有没有可能在某个地方,可以碰到他的基友? 小仓鼠那么弱,还要天天被zzq大爷虐,请你快来救救他吧! 输入输出格式 输入格式: 第一行两个正整数n和q,表示这棵树节点的个数和询问的个数. 接下来n-1行,每行两个正整数u和v,表示节点u到节点v之

洛谷 P2801 教主的魔法 题解

此文为博主原创题解,转载时请通知博主,并把原文链接放在正文醒目位置. 题目链接:https://www.luogu.org/problem/show?pid=2801 题目描述 教主最近学会了一种神奇的魔法,能够使人长高.于是他准备演示给XMYZ信息组每个英雄看.于是N个英雄们又一次聚集在了一起,这次他们排成了一列,被编号为1.2.…….N. 每个人的身高一开始都是不超过1000的正整数.教主的魔法每次可以把闭区间[L, R](1≤L≤R≤N)内的英雄的身高全部加上一个整数W.(虽然L=R时并不