zoukankan      html  css  js  c++  java
  • hdu 4647 Another Graph Game

    思路:

    对于一条边来说, 如果拿了一个点, 说明已经拿了该边的一半权值。
    如果某边的两个的顶点分别是不同的人。  那么差值还是不变的。 
    如果某边的两个顶点分别是同一个人。 那么和值也不变。
    所以我们可以把一个边分解到两个顶点上,然后依次Alice 取最大,Bob 取次大。 因为 他们都是绝顶聪明的。

    代码如下:

     1 #include<iostream>
     2 #include<stdio.h>
     3 #include<algorithm>
     4 using namespace std;
     5 double d[100001],ans;
     6 int main(){
     7     int n,m,i,u,v,w;
     8     while(scanf("%d%d",&n,&m)!=EOF){
     9         for(i=1;i<=n;i++) scanf("%lf",&d[i]);
    10         for(i=0;i<m;i++){
    11             scanf("%d%d%d",&u,&v,&w);
    12             d[u]+=w/2.0;
    13             d[v]+=w/2.0;
    14         }
    15         sort(d+1,d+n+1);
    16         ans=0.0;
    17         for(i=n;i>=1;i-=2) ans+=d[i]-d[i-1];
    18         printf("%.0lf
    ",ans);
    19     }
    20     return 0;
    21 }
    View Code
  • 相关阅读:
    每日日报16
    每日日报15
    每日日报14
    每日日报13
    每日日报12
    每日日报11
    每日日报10
    每日作业报告
    每日作业报告
    每日作业报告
  • 原文地址:https://www.cnblogs.com/xin-hua/p/3249066.html
Copyright © 2011-2022 走看看