【BZOJ】1667: [Usaco2006 Oct]Cows on Skates滑旱冰的奶牛

Description

经过跟Farmer John长达数年的谈判,奶牛们终于如愿以偿地得到了想要的旱冰鞋。农场上大部分的区域都很平整,适合在上面滑动,但有一些小块的土地上有很多的岩石,凭奶牛们的旱冰技术,是没有办法通过的。 农场可以看成一个被划分成R(1<=R<=113)行C(1<=C<=77)列的矩阵。快要开饭了,贝茜发现自己在坐标为(1,1)的格子里,并且她想赶到坐标为(R,C)的牛棚去享用她的晚饭。贝茜知道,以她所在的格子为起点,每次向上、下、左、右滑动(但不能沿对角线滑动),一定能找到一条通往牛棚的、不经过任何有大量岩石的格子的路。请你为她指出任意一条通往牛棚的路径。

Input

* 第1行: 两个用空格隔开的整数,R和C * 第2..R+1行: 每行包含C个字符(不含空格),字符只可能是‘.‘或‘*‘。是‘.‘ 的话,表示贝茜能从这个格子里通过,是‘*‘的话,则这个格子 是不能通过的多岩石地带

Output

* 第1..?行: 每行包含2个用空格隔开的整数,表示贝茜回牛棚路径所通过的格 子的坐标。输出的第一行显然应该是1 1,最后一行是R C。输出中 的其余行,依次给出路径中格子的坐标,相邻的两个坐标所表示的 格子必须相邻。

Sample Input

5 8
..*...**
*.*.*.**
*...*...
*.*.*.*.
....*.*.

Sample Output

1 1
1 2
2 2
3 2
3 3
3 4
2 4
1 4
1 5
1 6
2 6
3 6
3 7
3 8
4 8
5 8

题解:

  宽搜没的说……注意初始的(1,1)也算。WA一发被这个坑了

 

 

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
const int MAXN = 114;
const int mx[] = { 1, -1, 0, 0 };
const int my[] = { 0, 0, 1, -1 };
struct xx
{
	int x, y;
};
xx a[MAXN];
char g[MAXN][MAXN];
bool use[MAXN][MAXN];
int n, m;
int cnt;
bool check(int x, int y)
{
	if (use[x][y] == false) return false;
	if (x > n || x<1 || y>m || y < 1) return false;
	return true;
}
inline void add(int x, int y)
{
	if (g[x][y] == ‘.‘) use[x][y] = true;
	else use[x][y] = false;
}
void dfs(int x, int y)
{
	int i;
	if (x == n&&y == m)
	{
		for (i = 1; i <= cnt; i++)
		{
			printf("%d %d\n", a[i].x, a[i].y);
		}
		exit(0);
	}
	for (i = 0; i <= 3; i++)
	{
		int tx = x + mx[i];
		int ty = y + my[i];
		if (check(tx, ty))
		{
			//cout << tx << ‘ ‘ << ty << endl;
			a[++cnt].x = tx, a[cnt].y = ty;
			use[tx][ty] = false;
			dfs(tx, ty);
			cnt--;
			use[tx][ty] = true;
		}
	}
}
int main(int argc, char *argv[])
{
	int i, j, x, y;
	scanf("%d%d", &n, &m);
	for (i = 1; i <= n; i++)
	{
		scanf("%s", g[i] + 1);
		for (j = 1; j <= m; j++)
			add(i, j);
	}
	puts("1 1");
	dfs(1, 1);
	return 0;
}
时间: 2024-10-11 22:29:04

【BZOJ】1667: [Usaco2006 Oct]Cows on Skates滑旱冰的奶牛的相关文章

BZOJ 1668: [Usaco2006 Oct]Cow Pie Treasures 馅饼里的财富( dp )

dp , dp[ i ][ j ] = max( dp[ k ][ j - 1 ] ) ( i - 1 <= k <= i + 1 , dp[ k ][ j - 1 ] > 0 ) 一开始没注意到要 dp[ k ][ j - 1 ] > 0 才能取 , 然后就WA 了2次... -------------------------------------------------------------------------- #include<cstdio> #incl

bzoj 1669: [Usaco2006 Oct]Hungry Cows饥饿的奶牛【dp+树状数组+hash】

最长上升子序列.虽然数据可以直接n方但是另写了个nlogn的 转移:f[i]=max(f[j]+1)(a[j]<a[i]) O(n^2) #include<iostream> #include<cstdio> using namespace std; const int N=5005; int n,a[N],f[N],ans; int read() { int r=0,f=1; char p=getchar(); while(p>'9'||p<'0') { if(

BZOJ 1668: [Usaco2006 Oct]Cow Pie Treasures 馅饼里的财富

Description 最近,奶牛们热衷于把金币包在面粉里,然后把它们烤成馅饼.第i块馅饼中含有Ni(1<=Ni<=25)块金币,并且,这个数字被醒目地标记在馅饼表面. 奶牛们把所有烤好的馅饼在草地上排成了一个R行(1<=R<=100)C列(1<=C<=100)的矩阵.你现在站在坐标为(1,1)的馅饼边上,当然,你可以拿到那块馅饼里的所有金币.你必须从现在的位置,走到草地的另一边,在坐标为(R,C)的馅饼旁边停止走动.每做一次移动,你必须走到下一列的某块馅饼旁边,并且,

BZOJ1669: [Usaco2006 Oct]Hungry Cows饥饿的奶牛

1669: [Usaco2006 Oct]Hungry Cows饥饿的奶牛 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 665  Solved: 419[Submit][Status] Description Farmer John养了N(1 <= N <= 5,000)头奶牛,每头牛都有一个不超过32位二进制数的正整数编号.FJ希望奶牛们在进食前,能按编号从小到大的顺序排好队,但奶牛们从不听他的话.为了让奶牛们养成这个习惯,每次开饭时,FJ从奶

BZOJ 1662: [Usaco2006 Nov]Round Numbers 圆环数(数位DP+恶心细节)

BZOJ 1662: [Usaco2006 Nov]Round Numbers 圆环数 Time Limit: 5 Sec  Memory Limit: 64 MB Description 正如你所知,奶牛们没有手指以至于不能玩“石头剪刀布”来任意地决定例如谁先挤奶的顺序.她们甚至也不能通过仍硬币的方式. 所以她们通过"round number"竞赛的方式.第一头牛选取一个整数,小于20亿.第二头牛也这样选取一个整数.如果这两个数都是 "round numbers"

bzoj1670【Usaco2006 Oct】Building the Moat 护城河的挖掘

1670: [Usaco2006 Oct]Building the Moat护城河的挖掘 Time Limit: 3 Sec  Memory Limit: 64 MB Submit: 387  Solved: 288 [Submit][Status][Discuss] Description 为了防止口渴的食蚁兽进入他的农场,Farmer John决定在他的农场周围挖一条护城河.农场里一共有N(8<=N<=5,000)股泉水,并且,护城河总是笔直地连接在河道上的相邻的两股泉水.护城河必须能保护

BZOJ 3407: [Usaco2009 Oct]Bessie&#39;s Weight Problem 贝茜的体重问题( dp )

01背包... ----------------------------------------------------------------------- #include<cstdio> #include<algorithm> #include<cstring> #include<iostream> #define rep( i , n ) for( int i = 0 ; i < n ; i++ ) #define clr( x , c ) m

1668: [Usaco2006 Oct]Cow Pie Treasures 馅饼里的财富

1668: [Usaco2006 Oct]Cow Pie Treasures 馅饼里的财富 Time Limit: 3 Sec  Memory Limit: 64 MBSubmit: 498  Solved: 289[Submit][Status] Description 最近,奶牛们热衷于把金币包在面粉里,然后把它们烤成馅饼.第i块馅饼中含有Ni(1<=Ni<=25)块金币,并且,这个数字被醒目地标记在馅饼表面. 奶牛们把所有烤好的馅饼在草地上排成了一个R行(1<=R<=100)

BZOJ1668: [Usaco2006 Oct]Cow Pie Treasures 馅饼里的财富

1668: [Usaco2006 Oct]Cow Pie Treasures 馅饼里的财富 Time Limit: 3 Sec  Memory Limit: 64 MBSubmit: 459  Solved: 268[Submit][Status] Description 最近,奶牛们热衷于把金币包在面粉里,然后把它们烤成馅饼.第i块馅饼中含有Ni(1<=Ni<=25)块金币,并且,这个数字被醒目地标记在馅饼表面. 奶牛们把所有烤好的馅饼在草地上排成了一个R行(1<=R<=100)