jzoj3538 方陣移動

2021-09-25 21:02:26 字數 2430 閱讀 8760

description

操場可以看成乙個平面直角座標系,在操場上有nn個同學。你希望將這nn個同學排成乙個間距為1的nn的方陣,並且要求方陣的左邊界在y軸上。每個同學在初始格點(xi,yi)上,可以移動到任何乙個格點(xi』,yi』),耗費的體力值為(|xi-xi』|+|yi-yi』|)^p,xi,yi是整數,p是正整數。現在你想知道,將這nn同學移動成符合要求的方陣的情況下,總共耗費的體力值最小是多少。

input

每個測試點包含多組測試資料,第一行乙個正整數t,表示有t組測試資料。接下來有t個部分。每個部分第一行兩個正整數n,p,含義如上所述,接下來n*n行,每行兩個整數,表示每個同學的座標。

output

輸出t行,每行乙個整數,表示這一組測試資料的總共耗費最小體力值。

sample input

22 1

0 22 1

3 13 2

2 20 0

0 11 0

2 2sample output

6【樣例說明】

設f(y)表示方陣左上角為(0,y)的最優解

f(y)可以費用流o(n5)求

通過打表發現f(y)下凸,三分

(三分時為了方便防止特殊情況,可以不要求l==r,轉而為l+某個小數==r,最後暴力掃一下)

沒了

#include

#include

#include

#include

#include

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

#define fd(a,b,c) for (a=b; a>=c; a--)

#define inf 9223372036854775807ll

#define abs(x) ((x)>0?(x):-(x))

#define max(a,b) (a>b?a:b)

#define min(a,b) (ausing

namespace std;

int a[

5001][

2];long

long a[

5001];

int af[

5001];

int ls[

101]

;int x[51]

;int y[51]

;int x[51]

;int y[51]

;int d[

100001];

int bz[

100001];

long

long f[

101]

;int g[

101]

;int g[

101]

;int t,ed,n,n,p,i,i,j,k,l,len,mx,mn,h,t,mid,midd;

long

long ans,s;

void

new(

int x,

int y,

long

long w,

int flow)

void

new(

int x,

int y,

long

long w,

int flow)

long

longf(

long

long i)}fo

(i,1

,n)}

fo(i,

1,n)

while(1

)}bz[d[h]]=

0;}if

(f[ed]

<=

4611686018427387904ll

) ans+

=f[ed]

;else

break;

i=ed;

while

(i)}

return ans;

}int

main()

fo(i,

1,n)

y[i]

-=mn-1;

mx-=mn-1;

mn=1;

while

(mn+

5ans=inf;

fo(i,mn,mx)

printf

("%lld\n"

,ans);}

}

7 12 方陣迴圈右移 20 分

本題要求編寫程式,將給定n n方陣中的每個元素迴圈向右移m個位置,即將第0 1 n 1列變換為第n m n m 1 n 1 0 1 n m 1列。輸入格式 輸入第一行給出兩個正整數m和n 1 n 6 接下來一共n行,每行n個整數,表示乙個n階的方陣。輸出格式 按照輸入格式輸出移動後的方陣 即輸出n行...

7 17 方陣迴圈右移 20分

本題要求編寫程式,將給定n n方陣中的每個元素迴圈向右移m個位置,即將第0 1 n 1列變換為第n m n m 1 n 1 0 1 n m 1列。輸入格式 輸入第一行給出兩個正整數m和n 1 n 6 接下來一共n行,每行n個整數,表示乙個n階的方陣。輸出格式 按照輸入格式輸出移動後的方陣 即輸出n行...

7 2 方陣迴圈右移 20分

7 2 方陣迴圈右移 20分 本題要求編寫程式,將給定n n方陣中的每個元素迴圈向右移m個位置,即將第0 1 n 1列變換為第n m n m 1 n 1 0 1 n m 1列。輸入格式 輸入第一行給出兩個正整數m和n 1 n 6 接下來一共n行,每行n個整數,表示乙個n階的方陣。輸出格式 按照輸入格...