【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. 阿狸和桃子轮流将图中的顶点染色,阿狸会将顶 ... 
随机推荐
- 重温WCF之WCF中可靠性会话(十四)
			1.WCF中可靠性会话在绑定层保证消息只会被传输一次,并且保证消息之间的顺序.当使用TCP(Transmission Control Protocol,传输控制协议)通信时,协议本身保证了可靠性.然而 ... 
- async/await 异步编程(转载)
			转载地址:http://www.cnblogs.com/teroy/p/4015461.html 前言 最近在学习Web Api框架的时候接触到了async/await,这个特性是.NET 4.5引入 ... 
- Java Hour 67 Java Collection API
			本文不是一个大而全的讲述Java Coleection 相关的APi, 而是笔者认为哪些是一个初学者所能够而且必须确切知道的知识点. Collection 一脉 这里有我们比较常用的List<E ... 
- PHP实现上一篇、下一篇
			//php实现上一篇.下一篇 获取当前浏览文章id $id = isset($_GET[ ? intval($_GET['id']) : ""; 下一篇文章 $query = my ... 
- hdu 4038 2011成都赛区网络赛H 贪心 ***
			贪心策略 1.使负数为偶数个,然后负数就不用管了 2.0变为1 3.1变为2 4.2变为3 5.若此时操作数剩1,则3+1,否则填个1+1,然后回到5 
- Git 基础操作
			[TOC] 在Linux上安装Git $ git --version #查看git的版本号 $ sudo apt-get install git # 安装git 创建版本库 $ git init # ... 
- Android NDK开发实例教程
			WINDOWS系统+ Eclipse + NDK+Android 最近开始学习Android平台开发,Android还没有玩转,Java也是刚入门,这又要开始在Android中调用C语言,需要利用ND ... 
- Open judge C16H:Magical Balls 快速幂+逆元
			C16H:Magical Balls 总时间限制: 1000ms 内存限制: 262144kB 描述 Wenwen has a magical ball. When put on an infin ... 
- System.Web.Caching.Cache类 缓存
			1.文件缓存依赖 public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender ... 
- Spring官网改版后下载
			Spring官网改版后找了好久都没有找到直接下载Jar包的链接,下面汇总些网上提供的方法,亲测可用. 1.直接输入地址,改相应版本即可:http://repo.springsource.org/lib ... 
