牛客小白月賽22 D 收集紙片 全排列暴力

2021-10-03 04:22:44 字數 1483 閱讀 1336

時間限制:c/c++ 1秒,其他語言2秒

空間限制:c/c++ 262144k,其他語言524288k

64bit io format: %lld

題目描述

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

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

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

輸入描述:

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

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

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

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

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

輸出描述:

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

格式參見樣例。

示例1輸入

110 10

1 14

2 35 5

9 46 5

輸出the shortest path has length 24

思路:紙片最多才10個

考慮用next_permutation 全排列列舉即可 或者手寫dfs

#include

using namespace std;

typedef

long

long ll;

#define me(a,x) memset(a,x,sizeof a)

#define rep(i,x,n) for(int i=x;i#define repd(i,x,n) for(int i=x;i<=n;i++)

#define all(x) (x).begin(), (x).end()

#define pb(a) push_back(a)

#define paii pair

#define pali pair

#define pail pair

#define pall pair

#define fi first

#define se second

struct node

a[30];

int ans[30]

;int

main()

int sum=

1000000;do

sum=

min(sum,s);}

while

(next_permutation

(ans+

1,ans+p+1)

);cout<<

"the shortest path has length "

<}return0;

}

牛客小白月賽22

d題 題目鏈結 解題思路 直接暴搜,因為只有10個卡片嘛10 所以最多計算 10 10!次,直接列舉全排列算就可以了 include include using namespace std const int inf 0x3f3f3f3f int x 22 y 22 c 22 int main do...

牛客小白月賽22

我們知道將乙個大於1的數乘以另乙個大於1的數會使乘積大於任意乙個乘數。現在給出兩個數字 n,d,你能否計算將n乘以d次100的結果。多組輸入 每組輸入在一行中給出 n,d,1 n,d 100。每組輸入輸出一行代表答案。5 1 11 1 85 2 500 1100 850000 author 一屆書生...

牛客小白月賽22題解

a 操作序列 單點增加,區間求和,下標最小的非零數變成零,單點查詢。說完了不就線段樹嘛。由於範圍比較大,先存下來,離散化,再進行樹上的操作。注意這裡的左右區間離散化值不一樣的,左邊離散化要找到大於等於左邊界的值,右邊離散化要找到小於等於右邊界的值。b 樹上子鏈 類似於 dp 求樹直徑 c 交換遊戲 ...