【BZOJ】2563: 阿狸和桃子的游戏
http://www.lydsy.com/JudgeOnline/problem.php?id=2563
题意:给一个n个加权点m条加权边的无向图,两个人轮流拿走一个点,最后使先手得分-后手得分尽量大。一个人的得分等于拿到的点的点权和+边的两个端点在这个点集的边的边权和。(n<=10000, m<=100000)
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll a[10005], ans;
int main() {
int n, m;
scanf("%d%d", &n, &m);
for(int i=1; i<=n; ++i) {
scanf("%lld", &a[i]);
ans-=a[i];
a[i]<<=1;
}
for(int i=1; i<=m; ++i) {
int x, y, w;
scanf("%d%d%d", &x, &y, &w);
a[x]+=w; a[y]+=w; ans-=w;
}
sort(a+1, a+1+n);
for(int i=n; i>=1; i-=2)
ans+=a[i];
printf("%lld\n", ans);
return 0;
}
理解错题意了真蛋疼......
以为是求先手要最大化自己的得分,后手也要最大化自己的得分,求最终先手得分-后手得分......QAQ
其实是求,先手要最大化自己的得分-对方的得分.....................
于是就好做了(orz PoPoQQQ
考虑先手的选择对答案(先手得分-后手得分)的贡献:
1、选一个点$i$,$i$对答案贡献$w[i]$
2、不选点$i$,$i$对答案贡献$-w[i]$
3、选边$i$的一个端点,$i$对答案贡献$0$
4、选边$i$的两个端点,$i$对答案贡献$c[i]$
5、不选边$i$的两个端点,$i$对答案贡献$-c[i]$
考虑初始化答案为$-(\sum w[i] + \sum c[i])$
再来考虑上述情况的对答案的贡献:
1、贡献了$2w[i]$
2、贡献了$0$
3、贡献了$c[i]$
4、贡献了$2c[i]$
5、贡献了$0$
于是发现对点重赋值可以做到上面的情况!
即对点重赋值为:$2w[i]+\sum_{(i, j) \in E} c[(i, j)]$
然后每个人轮流取最大就是了= =
【BZOJ】2563: 阿狸和桃子的游戏的更多相关文章
- Bzoj 2563: 阿狸和桃子的游戏 题解
2563: 阿狸和桃子的游戏 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 970 Solved: 695[Submit][Status][Discu ...
- BZOJ——2563: 阿狸和桃子的游戏
http://www.lydsy.com/JudgeOnline/problem.php?id=2563 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: ...
- bzoj 2563: 阿狸和桃子的游戏
开始写了一些东西但是后来浏览器挂了就没有存下来简直!!!!!!!!!!!!!QAQ 不想再写一遍了...总之是简单贪心. #include <iostream> #include < ...
- bzoj 2563: 阿狸和桃子的游戏 贪心
这个真的好巧妙啊~ 如果只考虑点权的话显然直接按照权值大小排序即可. 但是加入了边权,就有了一个决策的问题. 于是,我们将边权分一半,分给两个端点. 如果一个人拿了两个端点,则边权都会加上. 否则,边 ...
- 【bzoj2563】阿狸和桃子的游戏(贪心+构造)
题目传送门:bzoj2563 先膜拜一波PoPoQQQ的题解:BZOJ 2563 阿狸和桃子的游戏 贪心 其实我们可以这样看:把一条边的权值均分到两个端点,那么取到两个端点就能得到这条边的边权,如果只 ...
- BZOJ2563阿狸和桃子的游戏
2563: 阿狸和桃子的游戏 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 952 Solved: 682[Submit][Status][Discu ...
- 【BZOJ2563】阿狸和桃子的游戏(贪心)
[BZOJ2563]阿狸和桃子的游戏(贪心) 题面 BZOJ 题解 边权平均分给两个点就好了. #include<iostream> #include<cstdio> #inc ...
- Bzoj2563 阿狸和桃子的游戏
Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 701 Solved: 496 Description 阿狸和桃子正在玩一个游戏,游戏是在一个带权图G= ...
- BZOJ2563: 阿狸和桃子的游戏 贪心
Description 阿狸和桃子正在玩一个游戏,游戏是在一个带权图G=(V, E)上进行的,设节点权值为w(v),边权为c(e).游戏规则是这样的: 1. 阿狸和桃子轮流将图中的顶点染色,阿狸会将顶 ...
随机推荐
- SQLAlchemy Core插入数据,有好几种方法呢
看是一次插入一条还是多条, 看是数据表名是变量还是常量, 操作还是很灵活的, 主要看哪种顺手顺眼啦. #coding=utf-8 from datetime import datetime from ...
- mysql 方法row_number()方法
1. SELECT t.*, @curRow := @curRow + 1 AS row_numberFROM structure tJOIN (SELECT @curR ...
- 几个CSS3动画
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- ubuntu14使用qemu调试linux内核
# 下载内核源代码编译内核 cd ~/LinuxKernel/ wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.18.6.tar.x ...
- 异步框架asyn4j的原理
启动时调用init方法 public void init(){ if (!run){ run = true; //工作队列 workQueue = newPriorityBlockingQueue(m ...
- aChartEngine图表显示(一页显示多张图表)
在看本篇的时候,请确认已经看过了 某android平板项目开发笔记----aChartEngine图表显示(1) 不然,有些地方这里就不再说明… 关于XYMutilpleSeriesDataset 一 ...
- 【转】Kylin的Hierarchies,Derived维度方面配置优化
http://blog.csdn.net/jiangshouzhuang/article/details/51286150 Hierarchies: 理论上对于N维度,我们可以进行2的N次方的维度组合 ...
- JMeter正则表达式-学习(3)
同时关联多个值的方法: { : ", : "results": : [ : : { : : : "total_earnings":"&quo ...
- Http协议提要
HTTP协议提要 简单来说,HTTP就是一个基于应用层的通信规范:双方要进行通信,大家就要遵守一个规范---HTTP协议.HTTP协议从WWW服务器超文本到本地浏览器 ,可以使浏览器更加高效.HTTP ...
- hdu2255 二分图最大权配KM
KM算法:hdu2255 (大概理解了 参考博客: http://blog.csdn.net/niushuai666/article/details/7171880) 所谓交错树:就是 ...