主頁 > 後端開發 > [USACO07DEC]Mud Puddles S

[USACO07DEC]Mud Puddles S

2023-04-28 13:05:37 後端開發

[USACO07DEC]Mud Puddles S

題目描述

Farmer John is leaving his house promptly at 6 AM for his daily milking of Bessie. However, the previous evening saw a heavy rain, and the fields are quite muddy. FJ starts at the point (0, 0) in the coordinate plane and heads toward Bessie who is located at (X, Y) (-500 ≤ X ≤ 500; -500 ≤ Y ≤ 500). He can see all N (1 ≤ N ≤ 10,000) puddles of mud, located at points (Ai, Bi) (-500 ≤ Ai ≤ 500; -500 ≤ Bi ≤ 500) on the field. Each puddle occupies only the point it is on.

Having just bought new boots, Farmer John absolutely does not want to dirty them by stepping in a puddle, but he also wants to get to Bessie as quickly as possible. He's already late because he had to count all the puddles. If Farmer John can only travel parallel to the axes and turn at points with integer coordinates, what is the shortest distance he must travel to reach Bessie and keep his boots clean? There will always be a path without mud that Farmer John can take to reach Bessie.

清早6:00,Farmer John就離開了他的屋子,開始了他的例行作業:為貝茜擠奶,前一天晚上,整個農場剛經受過一場瓢潑大雨的洗禮,于是不難想見,FJ 現在面對的是一大片泥濘的土地,FJ的屋子在平面坐標\((0, 0)\)的位置,貝茜所在的牛棚則位于坐標\((X,Y)\) \((-500 <= X <= 500; -500 <= Y <= 500)\)處,當然咯, FJ也看到了地上的所有N(1 <= N <= 10,000)個泥塘,第i個泥塘的坐標為 \((A\_i, B\_i)\) \((-500 <= A\_i <= 500;-500 <= B\_i <= 500)\),每個泥塘都只占據了它所在的那個格子, Farmer John自然不愿意弄臟他新買的靴子,但他同時想盡快到達貝茜所在的位置,為了數那些討厭的泥塘,他已經耽擱了一些時間了,如果Farmer John 只能平行于坐標軸移動,并且只在x、y均為整數的坐標處轉彎,那么他從屋子門口出發,最少要走多少路才能到貝茜所在的牛棚呢?你可以認為從FJ的屋子到牛棚總是存在至少一條不經過任何泥塘的路徑,

輸入格式

* Line 1: Three space-separate integers: X, Y, and N.

第1行: 3個用空格隔開的整數:X,Y 和 N

* Lines 2..N+1: Line i+1 contains two space-separated integers: Ai and Bi

第2..N+1行: 第i+1行為2個用空格隔開的整數:A_i 和 B_i

輸出格式

* Line 1: The minimum distance that Farmer John has to travel to reach Bessie without stepping in mud.

第1行: 輸出1個整數,即FJ在不踏進泥塘的情況下,到達貝茜所在牛棚所需要 走過的最小距離

樣例

樣例輸入

1 2 7
0 2
-1 3
3 1
1 1
4 2
-1 1
2 2

樣例輸出

11



代碼

#include <bits/stdc++.h>
using namespace std;
struct Node{
	int x,y,dis;
};
queue<Node> q;
bool m[1001][1001];
int x,y,n;
const int dx[4]={-1,0,1,0};
const int dy[4]={0,1,0,-1};
bool f(int x,int y)
{
	return x<-500||x>500||y<-500||y>500||m[x+500][y+500];
}
void bfs()
{
	q.push({0,0,0});
	while(!q.empty())
	{
		int nx=q.front().x,ny=q.front().y,val=q.front().dis;
		q.pop();
		if(f(nx,ny)) continue;
		m[nx+500][ny+500]=1;
		if(nx==x&&ny==y)
		{
			cout << val << endl;
			return;
		}
		for(int i=0;i<4;i++)
		{
			q.push({nx+dx[i],ny+dy[i],val+1});
		}
	}
}
int main()
{
	cin >> x >> y >> n;
	while(n--)
	{
		int X,Y;
		cin >> X >> Y;
		m[X+500][Y+500]=1;
	}
	bfs();
	return 0;
}

本文來自小默的博客,轉載請注明原文鏈接:https://www.cnblogs.com/momotrace/p/p2873.html

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/551417.html

標籤:C

上一篇:行程

下一篇:返回列表

標籤雲
其他(158260) Python(38107) JavaScript(25396) Java(18003) C(15220) 區塊鏈(8260) C#(7972) AI(7469) 爪哇(7425) MySQL(7152) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5870) 数组(5741) R(5409) Linux(5334) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4565) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2432) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1964) Web開發(1951) HtmlCss(1928) python-3.x(1918) 弹簧靴(1913) C++(1912) xml(1889) PostgreSQL(1874) .NETCore(1857) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • [USACO07DEC]Mud Puddles S

    [USACO07DEC]Mud Puddles S 題目描述 Farmer John is leaving his house promptly at 6 AM for his daily milking of Bessie. However, the previous evening saw a ......

    uj5u.com 2023-04-28 13:05:37 more
  • 行程

    行程、輕量級行程和執行緒 行程在教科書中通常定義:行程是程式執行時的一個實體,可以把它看作充分描述程式已經執行到何種程度的資料結構的匯集。 從內核的觀點,行程的目的就是擔當分配系統資源(CPU時間、記憶體等)的物體。 當一個行程被創建時,他幾乎于父行程相同。它接受父行程地址空間的一個(邏輯)拷貝,并從進 ......

    uj5u.com 2023-04-28 13:05:22 more
  • 如何將 Spire.Doc for C++ 集成到 C++ 程式中

    Spire.Doc for C++ 是一個專業的 Word 庫,供開發人員在任何型別的 C++ 應用程式中閱讀、創建、編輯、比較和轉換 Word 檔案。 本文演示了如何以兩種不同的方式將 Spire.Doc for C++ 集成到您的 C++ 應用程式中。 通過 NuGet 安裝 Spire.Doc ......

    uj5u.com 2023-04-28 07:59:10 more
  • 線上問題排查回答(轉載)

    面試官:「你是怎么定位線上問題的?」 這個面試題我在兩年社招的時候遇到過,前幾天面試也遇到了。我覺得我每一次都答得中規中矩,今天來梳理復盤下,下次又被問到的時候希望可以答得更好。 下一次我應該會按照這個思路去答: 1、如果線上出現了問題,我們更多的是希望由監控告警發現我們出了線上問題,而不是等到業務 ......

    uj5u.com 2023-04-28 07:57:59 more
  • 行程

    行程、輕量級行程和執行緒 行程在教科書中通常定義:行程是程式執行時的一個實體,可以把它看作充分描述程式已經執行到何種程度的資料結構的匯集。 從內核的觀點,行程的目的就是擔當分配系統資源(CPU時間、記憶體等)的物體。 當一個行程被創建時,他幾乎于父行程相同。它接受父行程地址空間的一個(邏輯)拷貝,并從進 ......

    uj5u.com 2023-04-28 07:54:32 more
  • WPF教程_編程入門自學教程_菜鳥教程-免費教程分享

    教程簡介 WPF(Windows Presentation Foundation)是微軟推出的基于Windows 的用戶界面框架,屬于.NET Framework的一部分。它提供了統一的編程模型、語言和框架,真正做到了分離界面設計人員與開發人員的作業;同時它提供了全新的多媒體互動用戶圖形界面。 WP ......

    uj5u.com 2023-04-27 10:22:35 more
  • SpringBoot SpringSecurity 介紹(基于記憶體的驗證)

    SpringBoot 集成 SpringSecurity + MySQL + JWT 附原始碼,廢話不多直接盤 SpringBoot已經為用戶采用默認配置,只需要引入pom依賴就能快速啟動Spring Security。 目的:驗證請求用戶的身份,提供安全訪問 優勢:基于Spring,配置方便,減少大 ......

    uj5u.com 2023-04-27 10:09:09 more
  • 從原理聊JVM(三):詳解現代垃圾回收器Shenandoah和ZGC

    現代的垃圾回收器為了低停頓的目標可謂將“并發”二字玩到極致,Shenandoah在G1基礎上做了非常多的優化來使回收階段并行,而ZGC直接采用了染色指標、NUMA等黑科技,目的都是為了讓Java開發者可以更多的將精力放在如何使用物件讓程式更好的運行,剩下的一切交給GC,我們所做的只需享受現代化GC技... ......

    uj5u.com 2023-04-27 10:05:14 more
  • SpringBoot SpringSecurity 介紹(基于記憶體的驗證)

    SpringBoot 集成 SpringSecurity + MySQL + JWT 附原始碼,廢話不多直接盤 SpringBoot已經為用戶采用默認配置,只需要引入pom依賴就能快速啟動Spring Security。 目的:驗證請求用戶的身份,提供安全訪問 優勢:基于Spring,配置方便,減少大 ......

    uj5u.com 2023-04-27 10:05:02 more
  • 淺談errgroup的使用以及原始碼分析

    本文講解的是golang.org/x/sync這個包中的errgroup 1、errgroup 的基礎介紹 學習過 Go 的朋友都知道 Go 實作并發編程是比較容易的事情,只需要使用go關鍵字就可以開啟一個 goroutine。那對于并發場景中,如何實作goroutine的協調控制呢?常見的一種方式 ......

    uj5u.com 2023-04-27 07:29:54 more