bzoj2563阿狸和桃子的遊戲

2022-03-18 11:43:06 字數 1106 閱讀 7702

bzoj2563阿狸和桃子的遊戲

題意:乙個n(偶數)點圖,節點權值為w(v),邊權為c(e)。兩人輪流將圖中的頂點染色,已經被染過色的點不能再染了,而且每一輪都必須給乙個且僅乙個頂點染色。染完後每個人的分數為染過的點權和以及兩個端點都被染的邊權和。如果兩人都是採用最優策略的,求最終第乙個人的分數減去第二個人的分數。n≤10000,邊數≤100000

題解:本弱只能引用神犇的題解

考慮先手選擇每個點對答案的影響

乙個點如果不選,本身對答案的貢獻是-w,乙個點如果選,本身對答案的貢獻是w,一條邊如果兩個端點都不選,對答案的貢獻是-c,如果兩個端點中只選擇乙個,對答案的貢獻是0,如果兩個端點都選,對答案的貢獻是c,那麼我們先預先把所有的權值都在初始答案中減掉,然後就變成了:

乙個點如果不選,本身對答案的貢獻是0,乙個點如果選,本身對答案的貢獻是2*w,一條邊如果兩個端點都不選,對答案的貢獻是0,如果兩個端點中只選擇乙個,對答案的貢獻是c,如果兩個端點都選,對答案的貢獻是2*c,那麼令乙個點的貢獻值為本身點權的二倍+所有相連的邊的邊權,排個序兩人輪流取最大即可。

**:

1 #include 2 #include 3 #include 4

#define maxn 10010

5#define inc(i,j,k) for(int i=j;i<=k;i++)

6#define ll long long

7using

namespace

std;89

intn,m; ll w[maxn],ans1,ans2;

10bool cmp(ll a,ll b)

11 inline int

read() while(ch>='

0'&&ch<='

9')x=x*10+ch-'

0',ch=getchar();

14return f*x;15}

16int

main() sort(w+1,w+n+1

,cmp);

19 inc(i,1,n)

20 printf("

%lld

",ans1-ans2); return0;

21 }

20160623

BZOJ 2563 阿狸和桃子的遊戲

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

bzoj2563 阿狸和桃子的遊戲

題目 如果只有點或邊的話,十分簡單對吧,但是,現在都有。怎麼辦呢?我們可以吧邊權分在點上,怎麼分,一般的想法就是對半分。但這樣對不對呢?感性認識,由於是算分差,如果兩個人各選了一條邊的乙個端點,沒有影響,不然的話,選了兩個端點的人能超乙個邊權。那,這樣就是對的。排序後,輕鬆解決。include us...

BZOJ 2563 阿狸和桃子的遊戲

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