【分析】

  唉。。乱搞的水题我都是不会。。

  就是随便弄一条路出来,然后绕开障碍。

  大概就是这样绕开:

  【BZOJ 4148】 4148: [AMPPZ2014]Pillars (乱搞)-LMLPHP

  理解了好久。。

 #include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std; char a[][]; int main()
{
int n,m,k;
scanf("%d%d%d",&n,&m,&k);
for(int i=;i<=n;i++)
for(int j=;j<=m;j++) a[i][j]=i&?'D':'G';
for(int i=;i<=n;i+=) a[i][]='L';
for(int i=;i<=n;i+=) a[i][m]='L';
for(int i=;i<n;i++) a[i][]='P';
for(int i=;i<=k;i++)
{
int x,y;
scanf("%d%d",&x,&y);
if(x&)
{
a[x+][y-]='L';
a[x][y+]='P';
a[x+][y+]='P';
a[x+][y+]='L';
}
else
{
if(y==)
{
a[x][]='G';
a[x][]='P';
a[x+][]='D';
a[x+][y+]='L';
}
else
{
a[x+][y+]='L';
a[x][y-]='P';
a[x+][y-]='P';
a[x+][y-]='L';
}
}
}
printf("TAK\n");
int xx=,yy=,nw=n*m-*k;
while(nw--)
{
printf("%c",a[xx][yy]);
if(a[xx][yy]=='L') xx--;
else if(a[xx][yy]=='P') xx++;
else if(a[xx][yy]=='D') yy--;
else yy++;
}
return ;
}

2017-04-10 08:53:03

05-08 14:49