牛客演算法周周練7 A 收集紙片 簽到題

2021-10-06 07:50:21 字數 2361 閱讀 2041

題目描述

我們把房間按照笛卡爾座標系進行建模之後,每個點就有了乙個座標。

假設現在房子裡有些紙片需要被收集,收集完紙片你還要回歸到原來的位置,你需要制定乙個策略來使得自己行走的距離最短。

你只能沿著 x 軸或 y 軸方向移動,從位置 (i,j) 移動到相鄰位置 (i+1,j),(i-1,j),(i,j+1) 或 (i,j-1) 距離增加 1。

輸入描述:

在第一行中給出乙個t,1≤t≤10t, 1 \le t \le 10t,1≤t≤10, 代表測試資料的組數。

對於每組輸入,在第一行中給出房間大小,第二行給出你的初始位置。

接下來給出乙個正整數 n,1≤n≤10n,1 \le n \le 10n,1≤n≤10 代表紙片的個數。

接下來 n 行,每行乙個座標代表紙片的位置。

保證房間小於 20×2020 \times 2020×20,紙片一定位於房間內。

輸出描述:

對於每組輸入,在一行中輸出答案。

格式參見樣例。

示例1輸入複製1

10 10

1 14

2 35 5

9 46 5

輸出複製

the shortest path has length 24

如下圖最短一定是這些點圍成的圖形的周長

而周長恰好=2倍的(∣y

max−

ymin

∣+∣x

max−

xmin

∣)(|y_-y_|+|x_-x_|)

(∣ymax

​−ym

in​∣

+∣xm

ax​−

xmin

​∣)所以只需記錄最小橫座標,最小縱座標,最大橫座標,最大縱座標即可

**如下

#ifdef debug

#include

#include

"/home/majiao/mb.h"

#endif

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define maxn ((int)1e5+7)

#define ll long long int

#define inf (0x7f7f7f7f)

#define fori(lef, rig) for(int i=lef; i<=rig; i++)

#define forj(lef, rig) for(int j=lef; j<=rig; j++)

#define fork(lef, rig) for(int k=lef; k<=rig; k++)

#define qaq (0)

using

namespace std;

#ifdef debug

#define show(x...) \

do while (0)

void

err(

)template

<

typename t,

typename..

. a>

void

err(t a, a.

.. x)

#endif

#ifndef debug

namespace fio

while

(ch >=

'0'&& ch <=

'9')

x *= f;}}

;using

namespace fio;

#endif

int n, m, q, k;

pair<

int,

int> a[maxn]

;int

main()

printf

("the shortest path has length %d\n",(

(maxy-miny)

+(maxx-minx)

)<<1)

;}#ifdef debug

clock_t etime =

clock()

;printf

("rum time: %lf 秒\n",(

double

)(etime-stime)

/clocks_per_sec)

;#endif

return0;

}

牛客演算法周周練7 題解

a 收集紙片 題意 在二維座標中有 n 個點需要你依次到達並最後返回起點,求最短路程 思路 典型的 tsp 旅行商問題,因為 n 最大只有 10 所以我們可以用 dfs 遍歷所有可能的情況,時間複雜度為 o 10 include include include include define inf ...

牛客演算法周周練2

a 題意 求乙個數的順序和逆序之和。題解 其實就是個閹割版的高精度加法嘛。其實逆序數忽略前導零這個條件是沒有用的,因為順序數不可能有前導零,自然結果也不會有,然後注意下首位進製不取餘。include using namespace std int a 10 b 10 intmain for k j ...

牛客演算法周周練2

題目鏈結 include define sc x scanf lld x define pf printf define rep i,s,e for int i s i e i define dep i,e,s for int i e i s i using namespace std typede...