這是在阿爾托利亞·潘德拉貢成為英靈前的事情,她正要去拔出石中劍成為亞瑟王,在這之前她要去收集一些寶石。
寶石排列在乙個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 #include4code#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 }
王者之劍題解
時間限制 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可以發現,所有能取得寶石的點必定是不相鄰的,如果本題點權都為...