• HDU4647+贪心


     1 /*
     2 贪心。
     3 题意:给定一些点 一些边 点和边都有价值。现在A B 选点。求A-B的maxVal
     4 思路:分割边。边的1/2分给两个端点。
     5     如果这两个点被同一个人取,则ok;否则 做减法也行,对题意无影响。
     6 */
     7 #include<stdio.h>
     8 #include<string.h>
     9 #include<stdlib.h>
    10 #include<algorithm>
    11 #include<iostream>
    12 #include<queue>
    13 #include<map>
    14 #include<stack>
    15 #include<set>
    16 #include<math.h>
    17 using namespace std;
    18 typedef long long int64;
    19 //typedef __int64 int64;
    20 typedef pair<int64,int64> PII;
    21 #define MP(a,b) make_pair((a),(b)) 
    22 const int maxn = 100015;
    23 const int inf = 0x7fffffff;
    24 const double pi=acos(-1.0);
    25 const double eps = 1e-8;
    26 double NodeVal[ maxn ],EdgeVal[ maxn ];
    27 bool cmp( double a,double b ){
    28     return a>b;
    29 }
    30 int main(){
    31     int n,m;
    32     while( scanf("%d%d",&n,&m)==2 ){
    33         for( int i=0;i<n;i++ ){
    34             scanf("%lf",&NodeVal[i]);
    35         }
    36         int u,v;
    37         for( int i=0;i<m;i++ ){
    38             scanf("%d%d%lf",&u,&v,&EdgeVal[i]);
    39             NodeVal[ u-1 ] += 1.0*EdgeVal[i]/2.0;
    40             NodeVal[ v-1 ] += 1.0*EdgeVal[i]/2.0;
    41         }
    42         double A,B;
    43         A = B = 0;
    44         sort( NodeVal,NodeVal+n,cmp );
    45         //NodeVal[ n ] = 0;
    46         for( int i=0;i<n;i++ ){
    47             if( i%2==0 ) A += NodeVal[i];
    48             else B += NodeVal[i];
    49         }
    50         //printf("A = %d, B = %d
    ",A,B);
    51         printf("%.0lf
    ",A-B);
    52     }
    53     return 0;
    54 }
    View Code
    keep moving...
  • 相关阅读:
    Ubuntu 系统装机指南
    java读取配置文件属性
    反转单链表 递归与非递归
    迟到的2013年终总结
    2014年阅读资料总结
    程序人生的四个象限和两条主线
    查找单链表中倒数第k个结点
    技术人员应真正学会的第二课程
    Linux“七大蠢”收录
    postman测试方法,出现400错误码
  • 原文地址:https://www.cnblogs.com/xxx0624/p/3263608.html
Copyright © 2020-2023  润新知