BZOJ 2563 阿狸和桃子的游戏 贪心

题目大意:给定一张无向图,每个点有点权,每条边有边权,两个人轮流选择点,若一条边的两端点被选择则这条边被选择,两人都想自己的得分-对手的得分最大,求最终先手得分-后手得分

考虑先手选择每个点对答案的影响

一个点如果不选,本身对答案的贡献是-w

一个点如果选,本身对答案的贡献是w

一条边如果两个端点都不选,对答案的贡献是-c

如果两个端点中只选择一个,对答案的贡献是0

如果两个端点都选,对答案的贡献是c

那么我们先预先把所有的权值都在初始答案中减掉,然后就变成了:

一个点如果不选,本身对答案的贡献是0

一个点如果选,本身对答案的贡献是2*w

一条边如果两个端点都不选,对答案的贡献是0

如果两个端点中只选择一个,对答案的贡献是c

如果两个端点都选,对答案的贡献是2*c

那么令一个点的贡献值为本身点权的二倍+所有相连的边的边权

排个序两人轮流取最大即可

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define M 10100
using namespace std;
int n,m;
long long ans,a[M];
int main()
{
	int i,x,y,z;
	cin>>n>>m;
	for(i=1;i<=n;i++)
	{
		scanf("%d",&z);
		ans-=z;a[i]=z<<1;
	}
	for(i=1;i<=m;i++)
	{
		scanf("%d%d%d",&x,&y,&z);
		ans-=z;a[x]+=z;a[y]+=z;
	}
	sort(a+1,a+n+1);
	for(i=2;i<=n;i+=2)
		ans+=a[i];
	cout<<ans<<endl;
	return 0;
}
时间: 2024-10-13 14:20:09

BZOJ 2563 阿狸和桃子的游戏 贪心的相关文章

bzoj 2563: 阿狸和桃子的游戏

开始写了一些东西但是后来浏览器挂了就没有存下来简直!!!!!!!!!!!!!QAQ 不想再写一遍了...总之是简单贪心. 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <cmath> 5 #include <algorithm> 6 #define MAXN 10005 7 using namespace std; 8 int n, m, a[M

【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;

【BZOJ2563】阿狸和桃子的游戏 贪心

依然加链接 #include <stdio.h> int main() { puts("转载请注明出处[vmurder]谢谢"); puts("网址:blog.csdn.net/vmurder/article/details/44499259"); } 题解: PoPoQQQ大爷已经说得很详细了. http://blog.csdn.net/PoPoQQQ/article/details/44495319 代码: #include <cstdio&g

阿狸和桃子的游戏题解

阿狸和桃子的游戏题解 每一道代码简单的黑题都有着诡异的思想,真不知道出题者怎么想的. 而这道题的重点在于把边权转换为点权, 此题的方式是将边权w平均分给被连接的两点u和v. 若u和v都被一人选择,则他的分数较不加边权前多了w/2+w/2=w, 若被不同的人选择,分数差多了(ans1+w/2)-(ans2-w/2)=ans1-ans2 并不会对答案有什么影响. 所以,最优策略? 肯定选择点权最大的了. 排序后依次选择即可. #include<bits/stdc++.h> using namesp

Bzoj2563 阿狸和桃子的游戏

Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 701  Solved: 496 Description 阿狸和桃子正在玩一个游戏,游戏是在一个带权图G=(V, E)上进行的,设节点权值为w(v),边权为c(e).游戏规则是这样的: 1. 阿狸和桃子轮流将图中的顶点染色,阿狸会将顶点染成红色,桃子会将顶点染成粉色.已经被染过色的点不能再染了,而且每一轮都必须给一个且仅一个顶点染色. 2. 为了保证公平性,节点的个数N为偶数. 3. 经过N/2轮游戏之

bzoj2563阿狸和桃子的游戏

题意: 一个n(偶数)点图,节点权值为w(v),边权为c(e).两人轮流将图中的顶点染色,已经被染过色的点不能再染了,而且每一轮都必须给一个且仅一个顶点染色.染完后每个人的分数为染过的点权和以及两个端点都被染的边权和.如果两人都是采用最优策略的,求最终第一个人的分数减去第二个人的分数.n≤10000,边数≤100000 题解: 本弱只能引用神犇的题解 “ 考虑先手选择每个点对答案的影响 一个点如果不选,本身对答案的贡献是-w,一个点如果选,本身对答案的贡献是w,一条边如果两个端点都不选,对答案的

bzoj 2563 贪心 思想

2563: 阿狸和桃子的游戏 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 952  Solved: 682[Submit][Status][Discuss] Description 阿狸和桃子正在玩一个游戏,游戏是在一个带权图G=(V, E)上进行的,设节点权值为w(v),边权为c(e).游戏规则是这样的: 1. 阿狸和桃子轮流将图中的顶点染色,阿狸会将顶点染成红色,桃子会将顶点染成粉色.已经被染过色的点不能再染了,而且每一轮都必须给一个且仅一个

codves1052 地鼠游戏 贪心

codves1052 地鼠游戏 贪心 题意 有n只地鼠,一开始地鼠是全部钻出来的,每只地鼠有钻出来的持续时间,t,或者说在t秒会钻回去,不再钻出来以及打掉的分数,打一次地鼠我们需要一秒时间,求最多能获得的分值这题其实相当于 对于每一只地鼠 我们只能在 0--ti-1这段时间内打 然后我们可以将 ti消失时间排个序 然后从最大T 枚举下去 枚举到t时,我们把消失时间 > t 的地鼠加到大根堆里面,表示t 这秒可以打这些地鼠, 然后我们每一秒取堆中的最大值就行了 这样其实就是你存在堆中的表示你一直能

AC自动机:BZOJ 2434 阿狸的打字机

2434: [Noi2011]阿狸的打字机 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 1834  Solved: 1053[Submit][Status][Discuss] Description 阿狸喜欢收藏各种稀奇古怪的东西,最近他淘到一台老式的打字机.打字机上只有28个按键,分别印有26个小写英文字母和'B'.'P'两个字母. 经阿狸研究发现,这个打字机是这样工作的: l 输入小写字母,打字机的一个凹槽中会加入这个字母(这个字母加在凹槽