日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【bzoj2563】【阿狸和桃子的游戏】【贪心】

發布時間:2024/1/18 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【bzoj2563】【阿狸和桃子的游戏】【贪心】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Description

  阿貍和桃子正在玩一個游戲,游戲是在一個帶權圖 G=(V, E) 上進行的,設節點權值為 w(v) ,邊權為 c(e) 。游戲規則是這樣的:
   1.? 阿貍和桃子輪流將圖中的頂點染色,阿貍會將頂點染成紅色,桃子會將頂點染成粉色。已經被染過色的點不能再染了,而且每一輪都必須給一個且僅一個頂點染色。
   2.? 為了保證公平性,節點的個數 N 為偶數。
   3.? 經過 N/2 輪游戲之后,兩人都得到了一個頂點集合。對于頂點集合 S ,得分計算方式為
  
  由于阿貍石頭剪子布輸給了桃子,所以桃子先染色。兩人都想要使自己的分數比對方多,且多得越多越好。如果兩人都是采用最優策略的,求最終桃子的分數減去阿貍的分數。  

Input

 輸入第一行包含兩個正整數NM,分別表示圖G的節點數和邊數,保證N一定是偶數。
  接下來N+M行。
  前N行,每行一個整數w,其中第k行為節點k的權值。
  后M行,每行三個用空格隔開的整數a b c,表示一條連接節點a和節點b的邊,權值為c

 

Output

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

Sample Input

4 4
6
4
-1
-2
1 2 1
2 3 6
3 4 3
1 4 5

Sample Output

3
數據規模和約定
  對于40%的數據,1 ≤ N ≤ 16。
  對于100%的數據,1 ≤ N ≤ 10000,1 ≤ M ≤ 100000,-10000 ≤ w , c ≤ 10000。
題解: 考慮如果只有點的話肯定是每次選權值最大的點。 我們只要保證不同的人選同一條邊的兩端點時這條邊的權值不會加給任何一個人即可。 所以我們把每條邊的權值平均分到兩個點上去即可。 然后排一遍序每次選最大的即可。 代碼: #include<iostream> #include<cstdio> #include<cstring> #include<queue> #include<algorithm> #define N 10010 using namespace std; priority_queue<double>q; int x,n,m; double v[N]; double a,b; struct use{int st,en;}e[N*10]; int main(){scanf("%d%d",&n,&m);for (int i=1;i<=n;i++) scanf("%lf",&v[i]);for (int i=1;i<=m;i++){scanf("%d%d%d",&e[i].st,&e[i].en,&x);v[e[i].st]+=(double)x/2.0;v[e[i].en]+=(double)x/2.0;} for (int i=1;i<=n;i++) q.push(v[i]);for (int i=1;i<=n/2;i++){a+=q.top();q.pop();b+=q.top();q.pop(); }cout<<a-b<<endl; }

總結

以上是生活随笔為你收集整理的【bzoj2563】【阿狸和桃子的游戏】【贪心】的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。