JZOJ 4855 荷花池塘

2021-07-25 03:28:00 字數 1700 閱讀 2396

description

於大夫建造了乙個美麗的池塘,用來讓自己愉快的玩耍。這個長方形的池子被分割成了m 行

和n 列的正方形格仔。池塘中有些地方是可以跳上的荷葉,有些地方是不能放置荷葉也不

能跳上的岩石,其他地方是池水(當然於大夫也是不能游泳的)。於大夫十分有趣,他在池

塘跳躍的方式和象棋中的馬一樣可以向八個方向走日字形,而且於大夫只能跳上荷葉。於大

夫每天從乙個給定的有荷葉的地方出發,試圖到達另乙個給定的有荷葉的地方。但有一天他

發現自己無論如何也不能到達目的地了,除非再在水中放置幾個荷葉。於大夫想讓你告訴他,

最少還需放置幾片荷葉?在放置荷葉最少的前提下,最少需要幾步能到達目的地?

input

第1 行: 兩個整數m , n

第2…m+1 行:第i + 1 行有n 個整數,表示該位置的狀態: 0 為水; 1 為荷葉; 2 為

岩石; 3 為於大夫開始的位置; 4 為於大夫要去的目標位置.

output

一行兩個整數空格隔開:分別為最少放置荷葉數和最小放置為前提下最少步數。(,如果無

論如何也不能到達請輸出-1 -1)。

sample input

4 8

0 0 0 1 0 0 0 0

0 0 0 0 0 2 0 1

0 0 0 0 0 4 0 0

3 0 0 0 0 0 1 0

sample output

2 6data constraint

10%的資料n,m<=4

30%的資料n,m<=10

50%的資料n,m<=30

70%的資料n,m<=50

100%的資料n,m<=100

簡單的bfs題目

就是要你在跳躍荷葉最少的情況下求最短路。

我們可以設乙個f[i][j]表示為到達(i,j)所需的最少荷葉數量

乙個 g[i][j]表示在到達(i,,j)所需的最少荷葉數量的情況下,所需的最少步數。

很顯然直接暴力bfs模擬一遍最短路的情況就好了。

#include 

#include

#include

#include

#include

#define fo(i,a,b) for (int i=a;i<=b;i++)

#define n 105

using namespace std;

const int dire[8][2],,,,,,,};

int f[n][n],g[n][n],a[n][n],d[n*n*n][2];

bool bz[n][n];

int n,m;

int main()

int i = 0 ,j = 1,tmp = 0;

while (i < j)}}

bz[x][y] = false;

}if (f[edx][edy] != inf) printf("%d %d\n",f[edx][edy],g[edx][edy]);

else printf("-1 -1\n");

return 0;

}

串列埠程式設計485

對於波特率的設定通常使用cfsetospeed和cfsetispeed函式來完成。獲取波特率資訊是通過cfgetispeed和 cfgetospeed函式來完成的。cfsetospeed函式 標頭檔案 include 函式原型 int cfsetospeed struct termios termp...

485硬體除錯心得

rs 485標準介面是微控制器系統常用的一種序列匯流排之一。採用半雙工通訊方式,它文成ttl電平轉換為rs 485電平的功能。以max485晶元為例,其結構和引腳都非常簡單,內部含有乙個驅動器和接收器。max485的封裝有dip so和umax三種。dip封裝如下 管腳的功能如下 r0 接收器輸出端...

485讀取RTU協議

對於css 1000水表採用rs485讀取表內資料,rs485無需交叉接線,使用rs485 rs232和rs232 usb轉換器連線電腦usb介面,使用串列埠通訊工具發布命令和接收資料。提供兩種通訊協議 modbus rtu only和modbus ascii 原協議,兩者在一次最大暫存器讀取量上有...