zoukankan      html  css  js  c++  java
  • Luogu P4643 阿狸和桃子的游戏

    题解 传送门

    既然题目要求的是差值
    所以对于减数和被减数同时加上一个相同的数是毫无影响的 (详情参考人教版六年级上册数学教材)
    所以不妨把边权分成两半
    分别加给两个顶点
    然后,直接每次选最大的点就好了

    代码

    #include<bits/stdc++.h>
    using namespace std;
    #define re register
    #define ll long long
    #define in inline
    #define get getchar()
    #define db double
    in int read()
    {
    	int t=0,x=1; char ch=get;
    	while ((ch<'0' || ch>'9') && ch!='-') ch=get;
    	if (ch=='-') ch=get,x=-1;
    	while (ch<='9' && ch>='0') t=t*10+ch-'0',ch=get;
    	return t*x;
    }
    const int _=1e5+5;
    db w[_];
    int n,m;
    int main()
    {
    	n=read(),m=read();
    	for(re int i=1;i<=n;i++)
    		w[i]=read();
    	for(re int i=1;i<=m;i++)
    	{
    		db x=read(),y=read(),z=read();
    		w[int(x)]=w[int(x)]+(z/2),w[int(y)]=w[int(y)]+(z/2);
    	}
    	sort(w+1,w+n+1);
    	db sum1=0,sum2=0;
    	for(re int i=n;i>=1;i--)
    	{
    		if(i%2==n%2)
    			sum1+=w[i]; //阿狸先行动
    		else
    			sum2+=w[i]; //桃子再行动
    	}
    	cout<<sum1-sum2<<endl;
    	return 0;
    }
    
    
    嗯,就这样了...
  • 相关阅读:
    图论复习
    数据结构复习
    数学复习
    字符串算法复习
    还有9天就要走了
    JS 多个一维数组排例组合的所有可能
    PHP 多个一维数组排列组合的所有可能
    维护DOWNID
    LINUX
    Multiple Versions of PHP run on server
  • 原文地址:https://www.cnblogs.com/yzhx/p/10655608.html
Copyright © 2011-2022 走看看