BZOJ_P2563 阿狸和桃子的游戏(贪心)
BZOJ傳送門
Time Limit: 3 Sec Memory Limit: 128 MB
Submit: 504 Solved: 359
[Submit][Status][Discuss]
Description
阿貍和桃子正在玩一個(gè)游戲,游戲是在一個(gè)帶權(quán)圖G=(V, E)上進(jìn)行的,設(shè)節(jié)點(diǎn)權(quán)值為w(v),邊權(quán)為c(e)。游戲規(guī)則是這樣的:
1. 阿貍和桃子輪流將圖中的頂點(diǎn)染色,阿貍會(huì)將頂點(diǎn)染成紅色,桃子會(huì)將頂點(diǎn)染成粉色。已經(jīng)被染過色的點(diǎn)不能再染了,而且每一輪都必須給一個(gè)且僅一個(gè)頂點(diǎn)染色。
2. 為了保證公平性,節(jié)點(diǎn)的個(gè)數(shù)N為偶數(shù)。
3. 經(jīng)過N/2輪游戲之后,兩人都得到了一個(gè)頂點(diǎn)集合。對(duì)于頂點(diǎn)集合S,得分計(jì)算方式為
。
由于阿貍石頭剪子布輸給了桃子,所以桃子先染色。兩人都想要使自己的分?jǐn)?shù)比對(duì)方多,且多得越多越好。如果兩人都是采用最優(yōu)策略的,求最終桃子的分?jǐn)?shù)減去阿貍的分?jǐn)?shù)。
Input
輸入第一行包含兩個(gè)正整數(shù)N和M,分別表示圖G的節(jié)點(diǎn)數(shù)和邊數(shù),保證N一定是偶數(shù)。
接下來N+M行。
前N行,每行一個(gè)整數(shù)w,其中第k行為節(jié)點(diǎn)k的權(quán)值。
后M行,每行三個(gè)用空格隔開的整數(shù)a b c,表示一條連接節(jié)點(diǎn)a和節(jié)點(diǎn)b的邊,權(quán)值為c。
Output
輸出僅包含一個(gè)整數(shù),為桃子的得分減去阿貍的得分。
Sample Input
4 4
6
4
-1
-2
1 2 1
2 3 6
3 4 3
1 4 5
Sample Output
3
數(shù)據(jù)規(guī)模和約定
對(duì)于40%的數(shù)據(jù),1 ≤ N ≤ 16。
對(duì)于100%的數(shù)據(jù),1 ≤ N ≤ 10000,1 ≤ M ≤ 100000,-10000 ≤ w , c ≤ 10000。
HINT
Source
2012國家集訓(xùn)隊(duì)Round 1 day2
請(qǐng)移步->PoPoQQQ神犇傳送門
#include<cstdio> #include<algorithm> #include<iostream> using namespace std; #define N 10005 int ans,a[N];int n,m,x,y,z; inline int in(int x=0,char ch=getchar(),int v=1){while(ch!='-'&&(ch>'9'||ch<'0')) ch=getchar();if(ch=='-') v=-1,ch=getchar();while(ch>='0'&&ch<='9') x=(x<<3)+(x<<1)+ch-'0',ch=getchar();return x*v; } int main(){n=in(),m=in();for(int i=1;i<=n;i++) a[i]=in(),ans-=a[i],a[i]<<=1;while(m--) x=in(),y=in(),z=in(),ans-=z,a[x]+=z,a[y]+=z;sort(a+1,a+n+1);for(int i=n;i>0;i-=2) ans+=a[i];printf("%d",ans);return 0; }總結(jié)
以上是生活随笔為你收集整理的BZOJ_P2563 阿狸和桃子的游戏(贪心)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 清明。。只是扫墓。。
- 下一篇: 公告:永久停用我的MSN邮箱!