bzoj 2563 阿狸和桃子的游戏

考虑选与不选对个人的影响->考虑净赚->重复计算要/2
启发:对于有复杂依赖关系的东西,转化为简单的净赚。

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<cmath>

#define md
#define ll long long
#define inf (int) 1e9
#define eps 1e-8
#define N 10010
using namespace std;
ll a[N];
int main()
{
int n,m;
scanf("%d%d",&n,&m);
for (int i=1;i<=n;i++) { scanf("%lld",&a[i]); a[i]*=2;}
for (int 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+n+1);
ll ans=0;
for (int i=1;i<=n;i++) if (i&1) ans-=a[i]; else ans+=a[i];
printf("%lld\n",ans>>1);
return 0;
}


你可能感兴趣的:(bzoj 2563 阿狸和桃子的游戏)