CCF 201604 5 網路連線 廣搜

2021-07-22 14:43:57 字數 1886 閱讀 1587

問題描述

試題編號:

201604-4

試題名稱:

遊戲時間限制:

1.0s

記憶體限制:

256.0mb

問題描述:

問題描述

小明在玩乙個電腦遊戲,遊戲在乙個n×m的方格圖上進行,小明控制的角色開始的時候站在第一行第一列,目標是前往第n行第m列。

方格圖上有一些方格是始終安全的,有一些在一段時間是危險的,如果小明控制的角色到達乙個方格的時候方格是危險的,則小明輸掉了遊戲,如果小明的角色到達了第n行第m列,則小明過關。第一行第一列和第n行第m列永遠都是安全的。

每個單位時間,小明的角色必須向上下左右四個方向相鄰的方格中的乙個移動一格。

經過很多次嘗試,小明掌握了方格圖的安全和危險的規律:每乙個方格出現危險的時間一定是連續的。並且,小明還掌握了每個方格在哪段時間是危險的。

現在,小明想知道,自己最快經過幾個時間單位可以達到第n行第m列過關。

輸入格式

輸入的第一行包含三個整數n, m, t,用乙個空格分隔,表示方格圖的行數n、列數m,以及方格圖中有危險的方格數量。

接下來t行,每行4個整數r, c, a, b,表示第r行第c列的方格在第a個時刻到第b個時刻之間是危險的,包括a和b。遊戲開始時的時刻為0。輸入資料保證r和c不同時為1,而且當r為n時c不為m。乙個方格只有一段時間是危險的(或者說不會出現兩行擁有相同的r和c)。

輸出格式

輸出乙個整數,表示小明最快經過幾個時間單位可以過關。輸入資料保證小明一定可以過關。

樣例輸入

3 3 3

2 1 1 1

1 3 2 10

2 2 2 10

樣例輸出

6

樣例說明

第2行第1列時刻1是危險的,因此第一步必須走到第1行第2列。

第二步可以走到第1行第1列,第三步走到第2行第1列,後面經過第3行第1列、第3行第2列到達第3行第3列。

評測用例規模與約定

前30%的評測用例滿足:0 < n, m ≤ 10,0 ≤ t < 99。

所有評測用例滿足:0 < n, m ≤ 100,0 ≤ t < 9999,1 ≤ r ≤ n,1 ≤ c ≤ m,0 ≤ a ≤ b ≤ 100。

解題思路:

1,廣度搜尋的問題

2,計算狀態,因為b<=100本題目最多有100*100*100個狀態,對狀態進行標記,複雜度內可以解決

3,tips:用優先佇列沒有普通佇列好,因為維護乙個優先佇列需要額外的開銷,但是普通佇列,

由於每走一步都是步驟加1,所以用普通的佇列也可以達到步驟最小的效果。

#include#include#include#includeusing namespace std;

struct node

};struct trap ;

int n,m,t;

trap trap[105][105];

bool flag[105][105][400];

int addx[4]= ;

int addy[4]= ;

int bfs()

for(int i=0;i<4;i++){

node newnode ;

newnode.x=top.x+addx[i] ;

newnode.y=top.y+addy[i] ;

newnode.step = top.step+1 ;

if(newnode.x<1||newnode.x>n||newnode.y<1||newnode.y>m)continue ;

if(flag[newnode.x][newnode.y][newnode.step])continue ;

if(newnode.step>trap[newnode.x][newnode.y].b||newnode.step

UVa 216 網路連線

題意 給出一些電腦的二維座標,連線兩個電腦所用網線長為它們之間的直線距離再加上16 feet。要求把所有電腦連成乙個串,怎樣連,使得所用網線最短,並且按從一端到另一端的順序輸出連線的兩個電腦間的距離。思路 很容易想到的就是暴力列舉,將所有電腦做乙個全排列,求得總長最小值的那個。這裡用的遞迴列舉 即回...

centos7 網路連線

感謝兩位老兄 設定虛擬機器ip網段參考 centos7 虛擬機器如何固定ip連線主機網路 外網連線參考 在vmware中設定centos7的網路 centos系統在安裝完畢後,預設聯網狀態為no,需要手動開啟聯網狀態。編輯網絡卡檔案 vim etc sysconfig network scripts...

linux系統(CentOS7)網路連線排查

1.首先檢視防火牆 1 設定開機啟用防火牆 systemctl enable firewalld.service 2 設定開機禁用防火牆 systemctl disable firewalld.service 3 啟動防火牆 systemctl start firewalld 4 關閉防火牆 sys...