Description
给定一张无向图,每个点有点权,每条边有边权,两个人轮流选择点,若一条边的两端点被选择则这条边被选择,两人都想自己的得分-对手的得分最大,求最终先手得分-后手得分
Sample Input
4 4
6
4
-1
-2
1 2 1
2 3 6
3 4 3
1 4 5
Sample Output
3
贪心好题,并不会做。
大家去膜PoPoQQQ吧。。。
世界
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int read() {
int s = 0, f = 1; char ch = getchar();
while(ch < '0' || ch > '9') {if(ch == '-') f = -1; ch = getchar();}
while(ch >= '0' && ch <= '9') s = s * 10 + ch - '0', ch = getchar();
return s * f;
}
int a[11000];
int main() {
int n = read(), m = read();
int ans = 0;
for(int i = 1; i <= n; i++) {
int c = read();
a[i] += c * 2;
ans -= c;
}
for(int i = 1; i <= m; i++) {
int x = read(), y = read(), c = read();
a[x] += c, a[y] += c;
ans -= c;
} sort(a + 1, a + n + 1);
for(int i = n; i >= 1; i -= 2) ans += a[i];
printf("%d\n", ans);
return 0;
}