bzoj 2563: 阿狸和桃子的游戏 贪心

Posted guangheli

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bzoj 2563: 阿狸和桃子的游戏 贪心相关的知识,希望对你有一定的参考价值。

这个真的好巧妙啊~ 

如果只考虑点权的话显然直接按照权值大小排序即可. 

但是加入了边权,就有了一个决策的问题. 

于是,我们将边权分一半,分给两个端点.   

如果一个人拿了两个端点,则边权都会加上. 

否则,边权会抵消.   

直接按照点权+一半边权排序即可.    

code: 

#include <bits/stdc++.h>  
#define N 100004   
#define LL long long 
using namespace std;  
void setIO(string s) 
{
    string in=s+".in"; 
    freopen(in.c_str(),"r",stdin);    
}    
LL a[N];   
int main() 
{ 
    // setIO("input");       
    int n,m,i,j; 
    scanf("%d%d",&n,&m);     
    for(i=1;i<=n;++i) scanf("%lld",&a[i]),a[i]<<=1;   
    for(i=1;i<=m;++i) 
    {
        int x,y; 
        LL z; 
        scanf("%d%d%lld",&x,&y,&z);  
        a[x]+=z,a[y]+=z;  
    } 
    sort(a+1,a+1+n); 
    LL ans=0ll; 
    for(i=1;i<n;i+=2) 
    {
        ans+=a[i+1]-a[i];  
    } 
    printf("%lld
",ans/2); 
    return 0;   
}

  

以上是关于bzoj 2563: 阿狸和桃子的游戏 贪心的主要内容,如果未能解决你的问题,请参考以下文章

Bzoj2563 阿狸和桃子的游戏

BZOJ——2563: 阿狸和桃子的游戏

bzoj 2563 贪心 思想

bzoj2563 阿狸和桃子的游戏

bzoj2563 阿狸和桃子的游戏

BZOJ[2563] 阿狸和桃子的游戏