POJ 1924 The Treasure 搜索

2014-11-23 23:36:46 · 作者: · 浏览: 1


在N*M的的地图中,有p个怪物,a表示可以攻击周围的怪物,n表示只能攻击当前位置的怪物。

给你每个怪物nge位置,然后每一秒移动到下一个位置,重复移动。

问你最少在100步以内能不能找到宝物。


开始的时候看错了p,第一眼就得是大写,然后一直不能达到,结果复制粘贴才知道是小写,哎……

然后就是在状态里面加上一一维时间。


AC代码:

#include    
#include    
#include    
#include    
#include    
#include    
#include    
#include    
#include    
#include    
#include    
#include    
#include    
#include    
#include    
#include    
using namespace std;  
  
typedef long long LL;  
const int N=102;  
const LL II=1000000007;  
const int INF=0x3f3f3f3f;  
const double PI=acos(-1.0);  
  
struct point  
{  
    int x,y;  
}pos[N][N],q[2222222],w,e;  
  
int n,m,sx,sy,ex,ey,p;  
char maps[N][N];  
int t[8][2]={{1,0},{-1,0},{0,1},{0,-1},{1,1},{1,-1},{-1,1},{-1,-1}};  
int len[N];  
int type[N];//怪物的类型,1-可移动,0-不能移动   
bool vis[N][N][N];//标记数组vis[k][i][j],k-步数,i、j位置   
bool mon[N][N];//标记当前怪物可以攻击的位置,false不能,true可以   
  
void sett(int s,bool k)  
{  
    int i,j,x,y,tx,ty;  
    for(i=0;i=0&&tx=0&&ty=0&&x=0&&y>n>>m&&(n+m))  
    {  
        if(ci!=0)  
            puts("");  
        ci++;  
        p=0;  
        for(i=0;i
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;

typedef long long LL;
const int N=102;
const LL II=1000000007;
const int INF=0x3f3f3f3f;
const double PI=acos(-1.0);

struct point
{
    int x,y;
}pos[N][N],q[2222222],w,e;

int n,m,sx,sy,ex,ey,p;
char maps[N][N];
int t[8][2]={{1,0},{-1,0},{0,1},{0,-1},{1,1},{1,-1},{-1,1},{-1,-1}};
int len[N];
int type[N];//怪物的类型,1-可移动,0-不能移动
bool vis[N][N][N];//标记数组vis[k][i][j],k-步数,i、j位置
bool mon[N][N];//标记当前怪物可以攻击的位置,false不能,true可以

void sett(int s,bool k)
{
    int i,j,x,y,tx,ty;
    for(i=0;i=0&&tx=0&&ty=0&&x=0&&y>n>>m&&(n+m))
	{
	    if(ci!=0)
            puts("");
        ci++;
        p=0;
        for(i=0;i