王者之劍題解

2022-05-01 03:21:08 字數 2201 閱讀 9971

時間限制:1 s   記憶體限制:256 mb

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

寶石排列在乙個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:

這個題其實很簡單,我們不用去管如何走,只要取得格仔相容一定會有合法路徑。

有不相容的便想到了最小割,割掉最小不相容的點,獲得最大利益。

先將棋盤黑白染色,將白色的點和s連線,邊權為容量;再將黑色的點和t連線,邊權也是容量。

這時再將所有白色的點和周圍不相容的點連線,邊權為inf。s對於白點就是取,從路徑來說,s-白—黑—t,因為中間部分容量為inf,所以只能割掉兩邊的邊,割掉的就是捨棄的格仔。

1 #include2 #include3 #include4

using

namespace

std;

5#define min(a,b) ((a)<(b)?(a):(b))

6#define inf 1e9

7int

read()

14 ch=getchar();15}

16while(ch>='

0'&&ch<='9'

) 20

return s*f;21}

22int n,m,zong,num[105][105],s,t,val[10005],tot,r[10005

],sum;

23bool col[10005

];24

struct

oo c[200005

];27

void add(int x,int y,int

z) 33

void

readandprint() 45}

46 t=zong+1;47

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

51for(int i=2; i<=n; i++) 55}

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

62if(col[num[i][j]]) 66}

67}6869

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

76if(j80if(i>1

) 84

if(j>1

) 88}89

}90}91

}92int queue[100005],head,tail,deep[10005

];93

bool bfs(int s,int

t) 107

}108

}109

}110

return0;

111}

112int dfs(int opt,int

fw)

116int tmp=fw,k;

117for(int i=r[opt]; ~i; i=c[i].next)

124 c[i].vv-=k;

125 c[i^1].vv+=k;

126 tmp-=k;

127}

128}

129return fw-tmp;

130}

131int dinic(int s,int

t) 136

return

ans;

137}

138int

main()

146int hehe=main();

147int

main()

cogs 2051 王者之劍

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

網路流最小割 王者之劍

傳送門 不用考慮走的方法,因為一旦合法,即不同時取相鄰的兩個,一定能達到。所以只用考慮怎麼取就行了。把棋盤黑白染色,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可以發現,所有能取得寶石的點必定是不相鄰的,如果本題點權都為...