110
100
题目描述:救人,这是一个三维的迷宫着火了,里面有若干人,时间一定,一次只能救一人,且从出发点到被救的人那里的时间是回来的时间的一半,救一个人获得P「i」的价值,问你最多能得到多少价值;
我想到的方法是从起点开始进行宽度优先遍历,把救每个人的最短时间求出来,然后再来次01背包就可以解决了。
LANGUAGE:C++
CODE:
#include<stdio.h>
#include<string.h>
#include<queue>
#define maxn 101
using namespace std;
struct node
{
int x,y,z,step;
};
const int dir[4][3]= {{0,1,0},{0,0,1},{0,-1,0},{0,0,-1}};
char matrix[11][101][101];
int height,width,length;
int v,path[101],p[101],f[10001];
bool check(int x,int y,int z)
{
if(x>-1&&y>-1&&z>-1&&x<height&&y<width&&z<length)
return 1;
return 0;
}
void bfs(int startx,int starty,int startz)
{
queue <node>que;
node cur,next;
bool used[maxn][maxn][maxn]={{{0}}};
int pcnt=0;
int tx,ty,tz;
cur.x=startx,cur.y=starty,cur.z=startz,cur.step=0;
used[cur.x][cur.y][cur.z]=1;
que.push(cur);
while(!que.empty())
{
cur=que.front();que.pop();
if(matrix[cur.x][cur.y][cur.z]=='&')
{
path[pcnt++]=cur.step;
}
if(matrix[cur.x][cur.y][cur.z]=='U')
{
tx=cur.x+1;
if(tx<height&&matrix[tx][cur.y][cur.z]!='X'&&!used[tx][cur.y][cur.z])
{
next.x=tx,next.y=cur.y,next.z=cur.z,next.step=cur.step+1;
used[next.x][next.y][next.z]=1;
que.push(next);
}
}
else if(matrix[cur.x][cur.y][cur.z]=='D')
{
tx=cur.x-1;
if(tx>-1&&matrix[tx][ty][tz]!='X'&&!used[tx][cur.y][cur.z])
{
next.x=tx,next.y=cur.y,next.z=cur.z,next.step=cur.step+1;
used[next.x][next.y][next.z]=1;
que.push(next);
}
}
for(int i=0;i<4;i++)
{
tx=cur.x+dir[i][0],ty=cur.y+dir[i][1],tz=cur.z+dir[i][2];
if(check(tx,ty,tz)&&!used[tx][ty][tz]&&matrix[tx][ty][tz]!='X')
{
used[tx][ty][tz]=1;
next.step=cur.step+1,next.x=tx,next.y=ty,next.z=tz;
que.push(next);
}
}
}
}
int main()
{
freopen("in.txt","r",stdin);
int tCase,volun,x,y,z;
int sx,sy,sz;
scanf("%d",&tCase);
getchar();
while(tCase--)
{
scanf("%d%d%d%d%d",&height,&width,&length,&volun,&v);
getchar();
for(int i=0; i<height; i++)
{
for(int j=0; j<width; j++)
{
for(int k=0; k<length; k++)
{
scanf("%c",&matrix[i][j][k]);
if(matrix[i][j][k]=='S')
{
sx=i,sy=j,sz=k;
}
}
matrix[i][j][length]='\0';
getchar();
}
}
for(int i=0; i<volun; i++)
{
scanf("%d%d%d%d",&x,&y,&z,&p[i]);
matrix[x-1][y-1][z-1]='&';
}
bfs(sx,sy,sz);
memset(f,0,sizeof(f));
for(int i=0;i<volun;i++)
path[i]*=3;
for(int i=0;i<volun;i++)
{
for(int j=v;j>=path[i];j--)
{
f[j]=max(f[j],f[j-path[i]]+p[i]);
}
}
printf("%d\n",f[v]);
}
return 0;
}
相关推荐
**DiskDrill 1.8 数据恢复软件详解** DiskDrill是一款强大的数据恢复工具,尤其在Mac操作系统中表现优秀。该软件的主要功能是帮助用户恢复意外丢失或删除的文件,无论是由于误操作、系统崩溃还是硬件故障导致的数据...
### 使用Apache Drill技术详解 #### 一、Apache Drill概述 **Apache Drill** 是一款用于大数据交互式分析的强大工具,属于开源分布式系统。它的主要特点包括: - **支持多种数据源和格式**:不仅可以处理传统的...
Apache Drill 是一个开源的无模式SQL查询引擎,它在大数据分析领域扮演着重要的角色。与传统的Hive不同,Drill不依赖MapReduce作业,并且它并不完全基于Hadoop生态系统。实际上,Drill的设计灵感来源于Google的...
disk drill 破解版, windowns 版。用于磁盘文件恢复,不限量
《Learning Apache Drill 2019》是一本关于如何使用Apache Drill进行分布式数据源查询和分析的书籍。Apache Drill是一个开源的SQL查询引擎,它能够查询各种数据源,包括Hadoop上的数据、NoSQL数据库、云存储服务和...
Apache Drill是Google BigQuery团队发起的一个开源项目,它是一个分布式、低延迟的SQL查询引擎,设计用于处理大规模的非结构化和半结构化数据。Apache Drill的目标是提供一种简单、快速的方式来查询和分析大规模的...
### Altium输出Gerber & Drill 文件的详细方法与步骤 #### 一、Altium输出Gerber文件 在Altium Designer中输出Gerber文件是电路板制造的重要步骤之一,它能够确保设计者的设计意图准确无误地传递给制造商。以下是...
Apache Drill 技术手册 Apache Drill 是一个低延迟的分布式海量数据交互式查询引擎,使用户能够使用 ANSI SQL 兼容语法查询多种类型的数据存储系统,包括本地文件、HDFS、Hive、HBase、MongoDB 等。Drill 的设计...
文件恢复工具,U盘恢复,硬盘恢复,文件恢复,disk drill破解版,免费
标题 "disk_drill_Recuva.7z" 暗示了这是一个包含两种文件恢复软件的压缩包,分别是 Disk Drill 和 Recuva。这两款工具都是为了帮助用户在误删除、格式化或其他数据丢失情况下找回重要文件。下面将详细介绍这两个...
### Cognos Drill Up/Down:深入理解与应用 #### 引言 在现代数据分析领域,Cognos作为一款领先的企业级商业智能工具,提供了强大的报告设计与数据分析功能。其中,“Drill Up/Down”(钻取)是Cognos中的一个核心...
Apache Drill是一款强大的、跨平台的数据查询引擎,专为大数据分析设计。它支持SQL查询语言,使得用户能够方便地处理各种不同类型的数据源,如Hadoop、NoSQL数据库、云存储等。在Apache Drill 1.18版本中,我们找到...
Disk Drill由多种数据恢复算法支持,可以读取NTFS, FAT32, EXT, HFS+和其他的文件系统。恢复在你系统硬盘和外部设备、SD卡和U盘、其他的笔记本电脑和计算机上由于误删除而丢失的数据。 快速而且简单全面的数据恢复,...
标题中的"Disk Drill Pro v4.0.5271.rar"表明这是一款名为Disk Drill Pro的数据恢复软件的版本号为4.0.5271的压缩包文件。Disk Drill是一款广泛使用的数据恢复工具,它能帮助用户找回丢失、删除或格式化的文件,尤其...
在“echarts3-chinese-map-drill-down.zip”这个压缩包中,我们聚焦的是ECharts的一个特色功能——省市区/县地图的三级下钻功能。这个功能允许用户在地图上进行多级深度交互,从全国地图逐级细化到省级、市级直至区...
disk drill mac版来帮您!这款苹果数据恢复软件提供磁盘监控、Mac清理、恢复驱动器、数据保护、数据备份等实用功能,支持快速扫描和深度扫描,所有丢失的数据都可以帮你找回,是找回你心爱数据的得力帮手!
在电子制造过程中,Gerber File和Drill File是至关重要的文件类型,它们分别用于描述电路板的印刷电路层和钻孔信息。下面将详细介绍如何在Protel中输出这两种文件。 1. 输出Gerber File: Gerber File是PCB制造的...
在2013年的大数据技术大会上,Drill的介绍提供了关于该大数据查询工具的重要信息,这些信息对于大数据分析师来说是非常宝贵的入门材料。Drill作为一个开源的分布式SQL查询引擎,旨在对Hadoop、NoSQL和云存储服务等大...
Apache Drill 1.16.0驱动包用maven shaded重新打包,包名统一加上了shaded.xxx,drill-jdbc-all-1.16.0 shaded,和系统其他jar不会冲突
mac os 恢复 recovery Disk Drill pro