bzoj2563 貪心 阿狸和桃子的遊戲

2021-08-10 07:03:50 字數 1651 閱讀 2775

2563: 阿狸和桃子的遊戲

time limit: 3 sec memory limit: 128 mb

submit: 992 solved: 715

[submit][status][discuss]

description

阿狸和桃子正在玩乙個遊戲,遊戲是在乙個帶權圖g=(v, e)上進行的,設節點權值為w(v),邊權為c(e)。遊戲規則是這樣的:

1. 阿狸和桃子輪流將圖中的頂點染色,阿狸會將頂點染成紅色,桃子會將頂點染成粉色。已經被染過色的點不能再染了,而且每一輪都必須給乙個且僅乙個頂點染色。

2. 為了保證公平性,節點的個數n為偶數。

3. 經過n/2輪遊戲之後,兩人都得到了乙個頂點集合。對於頂點集合s,得分計算方式為

。 由於阿狸石頭剪子布輸給了桃子,所以桃子先染色。兩人都想要使自己的分數比對方多,且多得越多越好。如果兩人都是採用最優策略的,求最終桃子的分數減去阿狸的分數。

input

輸入第一行包含兩個正整數n和m,分別表示圖g的節點數和邊數,保證n一定是偶數。

接下來n+m行。

前n行,每行乙個整數w,其中第k行為節點k的權值。

後m行,每行三個用空格隔開的整數a b c,表示一條連線節點a和節點b的邊,權值為c。

output

輸出僅包含乙個整數,為桃子的得分減去阿狸的得分。

sample input

4 4-1

-21 2 1

2 3 6

3 4 3

1 4 5

sample output

資料規模和約定

對於40%的資料,1 ≤ n ≤ 16。

對於100%的資料,1 ≤ n ≤ 10000,1 ≤ m ≤ 100000,-10000 ≤ w , c ≤ 10000。

hint

source

2012國家集訓隊round 1 day2

sol:

考慮選擇的時候產生的貢獻。

如果我們選擇了乙個點,產生了w的貢獻,不選乙個點,產生-w的貢獻,選了一條邊的2個端點,產生v的貢獻,選了一條邊的1個端點,產生0的貢獻。

預先把點和邊的貢獻給剪掉。變成了,選擇乙個點,產生2w的貢獻,不選乙個點,產生0的貢獻,選了一條邊的2個端點,產生2v的貢獻,選了一條邊的1個端點,產生v的貢獻。

那麼乙個點的貢獻變成2w+邊權即可,然後貪心選,每個人肯定選的都是堆頂的2個東西。

#include

#include

#include

#include

#include

#include

#include

#include

using namespace std;

int n,m;

inline int

read()

priority_queue q;

int a[11000],ans;

int main()

intx,y,z;

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

for(int i=1;i<=n;++i) q.push(a[i]);

while(n)

printf("%d",ans);

}

BZOJ 2563 阿狸和桃子的遊戲 貪心

題目大意 給定一張無向圖,每個點有點權,每條邊有邊權,兩個人輪流選擇點,若一條邊的兩端點被選擇則這條邊被選擇,兩人都想自己的得分 對手的得分最大,求最終先手得分 後手得分 考慮先手選擇每個點對答案的影響 乙個點如果不選,本身對答案的貢獻是 w 乙個點如果選,本身對答案的貢獻是w 一條邊如果兩個端點都...

bzoj2563 阿狸和桃子的遊戲 貪心

阿狸和桃子正在玩乙個遊戲,遊戲是在乙個帶權圖 g v,e 上進行的,設節點權值為 w v 邊權為 c e 遊戲規則是這樣的 1.阿狸和桃子輪流將圖中的頂點染色,阿狸會將頂點染成紅色,桃子會將頂點染成粉色。已經被染過色的點不能再染了,而且每一輪都必須給乙個且僅乙個頂點染色。2.為了保證公平性,節點的個...

bzoj2563 阿狸和桃子的遊戲 貪心

time limit 3 sec memory limit 128 mb submit 814 solved 585 submit status discuss description 阿狸和桃子正在玩乙個遊戲,遊戲是在乙個帶權圖g v,e 上進行的,設節點權值為w v 邊權為c e 遊戲規則是這樣...