cogs 2051 王者之劍

2022-05-20 22:41:13 字數 2553 閱讀 6104

這是在阿爾托利亞·潘德拉貢成為英靈前的事情,她正要去拔出石中劍成為亞瑟王,在這之前她要去收集一些寶石。

寶石排列在乙個n*m的網格中,每個網格中有一塊價值為v(i,j)的寶石,阿爾托利亞·潘德拉貢可以選擇自己的起點。

開始時刻為0秒。以下操作,每秒按順序執行

1.在第i秒開始的時候,阿爾托利亞·潘德拉貢在方格(x,y)上,她可以拿走(x,y)中的寶石。

2.在偶數秒,阿爾托利亞·潘德拉貢周圍四格的寶石會消失

3.若阿爾托利亞·潘德拉貢第i秒開始時在方格(x,y)上,則在第i+1秒可以立即移動到(x+1,y),(x,y+1),(x-1,y)或(x,y-1)上,也可以停留在(x,y)上。

求阿爾托利亞·潘德拉貢最多可以獲得多少價值的寶石

第一行給出數字n,m代表行列數.n,m均小於等於100,寶石的價值不會超過10000.下面n行m列用於描述數字矩陣

輸出最多可以拿到多少價值寶石

2 21 2

2 1

4
在此鍵入。

姚金宇的原創題,有修改

solution:

明確兩條性質:

1.乙個寶石只能在偶數時刻被吃掉

2.最終的結果與起始位置無關

那麼我們可以將矩陣像棋盤上一樣黑白染色

由於如果乙個點被吃,那麼它周圍的點一定不能被吃

所以將黑點與s(起點)連 v=1的邊  將白點與t(終點)連 v=1的邊 將黑點周圍的4個(或不到4個)白點連 v=inf的邊

最後用最大流求最小割即可

1 #include2 #include3 #include4

#define mem(a,b) memset(a,b,sizeof(a))

5using

namespace

std;

6const

int inf=(1

<<31)-1

;7 inline int minn(int a,int b)

8struct

son9

;12 son a1[500001

];13

int first[500001

],e;

1415

void addbian(int u,int v,int

w)16

2324

int dui[10000001

],he,en;

25 inline void clear()

26 inline void push(int x)

27 inline int top()

28 inline void pop()

29 inline bool empty()

3031

intn,m,u,o,s,t,sum;

32int ji[101][101

];33

int hh[101][101

];34

35int dep[20001

];36

intbfs()

3753}54

return0;

55}5657

int dfs(int x,int

val)

5869 a1[i].w-=k;a1[i^1].w+=k;val2-=k;70}

71return val-val2;72}

7374

intdinic()

7581

82void

out11()

83*/

91for(int i=s;i<=t;++i)

9298 printf("\n"

);99

}100

101int

main()

116117

for(int i=1;i<=n;++i)

118for(int j=1;j<=m;++j)

119 hh[i][j]=(i-1)*m+j;

120121

//out11();

122123

for(int i=1;i<=n;++i)

124for(int j=1;j<=n;++j)

125133

else

134138

}139

140//

out11();

141142

for(int i=1;i<=n;++i)

143for(int j=1;j<=m;++j)

144if

(ji[i][j])

145151

if(i

152156

if(j>1

)157

161if(j

162166

}167

168//

out11();

169170

//cout<<0;

171 printf("

%d",sum-dinic());

172//

while(1);

173return0;

174 }

code

王者之劍題解

時間限制 1 s 記憶體限制 256 mb 這是在阿爾托利亞 潘德拉貢成為英靈前的事情,她正要去拔出石中劍成為亞瑟王,在這之前她要去收集一些寶石。寶石排列在乙個n m的網格中,每個網格中有一塊價值為v i,j 的寶石,阿爾托利亞 潘德拉貢可以選擇自己的起點。開始時刻為0秒。以下操作,每秒按順序執行 ...

網路流最小割 王者之劍

傳送門 不用考慮走的方法,因為一旦合法,即不同時取相鄰的兩個,一定能達到。所以只用考慮怎麼取就行了。把棋盤黑白染色,s到黑點建權值為val的邊,白點到t建權值為val的邊,然後把相鄰的黑白點建一條為inf的邊。求最小割。不得不提一句 邊從零開始建和從一開始建乙個wa乙個a。時相應的正邊和反邊必須對應...

BZOJ1324 Exca王者之劍

description input 第一行給出數字n,m代表行列數.n,m均小於等於100 下面n行m列用於描述數字矩陣 output 輸出最多可以拿到多少塊寶石 sample input 2 21 2 2 1sample output 4可以發現,所有能取得寶石的點必定是不相鄰的,如果本題點權都為...