BZOJ2563阿狸和桃子的游戏

 

2563: 阿狸和桃子的游戏

Time Limit: 3 Sec  Memory Limit: 128 MB
Submit: 952  Solved: 682
[Submit][Status][Discuss]

Description

  阿狸和桃子正在玩一个游戏,游戏是在一个带权图G=(V, E)上进行的,设节点权值为w(v),边权为c(e)。游戏规则是这样的:
  1. 阿狸和桃子轮流将图中的顶点染色,阿狸会将顶点染成红色,桃子会将顶点染成粉色。已经被染过色的点不能再染了,而且每一轮都必须给一个且仅一个顶点染色。
  2. 为了保证公平性,节点的个数N为偶数。
  3. 经过N/2轮游戏之后,两人都得到了一个顶点集合。对于顶点集合S,得分计算方式为
  。
  由于阿狸石头剪子布输给了桃子,所以桃子先染色。两人都想要使自己的分数比对方多,且多得越多越好。如果两人都是采用最优策略的,求最终桃子的分数减去阿狸的分数。
 

Input

 输入第一行包含两个正整数N和M,分别表示图G的节点数和边数,保证N一定是偶数。
  接下来N+M行。
  前N行,每行一个整数w,其中第k行为节点k的权值。
  后M行,每行三个用空格隔开的整数a b c,表示一条连接节点a和节点b的边,权值为c。

 

Output

 输出仅包含一个整数,为桃子的得分减去阿狸的得分。

Sample Input

4 4
6
4
-1
-2
1 2 1
2 3 6
3 4 3
1 4 5

Sample Output

3
数据规模和约定
  对于40%的数据,1 ≤ N ≤ 16。
  对于100%的数据,1 ≤ N ≤ 10000,1 ≤ M ≤ 100000,-10000 ≤ w , c ≤ 10000。
 
题目大意:两个人分别对一个图的点染色。染到哪个点就会获得哪个点的价值,如果一条边的两端被同一个人染色,那么
这个人也会获得这条边的价值。
题解:贪心
把一条边的边权分给两端的点权,如果一条边的两端被两人选择,那么最后得分相减时会抵消
 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define maxn 10006
using namespace std; int n,m;
double sum1,sum2,w[maxn]; int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)scanf("%lf",&w[i]);
for(int i=;i<=m;i++)
{
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
w[x]+=(double)(z/.);
w[y]+=(double)(z/.);
}
sort(w+,w+n+);
while(n)
{
sum1+=w[n--];
sum2+=w[n--];
}
printf("%.lf\n",sum1-sum2);
}

bzoj 2563 贪心 思想的更多相关文章

  1. hdu 4105 贪心思想

    淋漓尽致的贪心思想 波谷一定是一位数.波峰一位数不够大的时候加入到两位数就一定够大了的. 当在寻找波谷碰到零了就自然当成波谷. 当在寻找波峰时碰到零时,将前面的波谷加到前一个波峰上.让当前的零做波谷, ...

  2. NOIP2012BLOCKADE贪心思想证明

    NOIP2012BLOCKADE贪心思想证明 这道题的做法是二分时间并检验这个时间是否可行.检验的方法要用到贪心思想. 对于不能到根结点的军队应该尽量向根结点走. 如果军队A能走到根结点但到根结点后剩 ...

  3. 贪心思想之区间贪心 关联洛谷P1803

    力扣上也有一道类似的题 几乎是一样 输出不同 → 力扣leetcode 435. 无重叠区间 区间贪心是比较经典的 就拿洛谷P1803来举例 题目大意 n个比赛 [开始时间,结束时间] 问一个人最多能 ...

  4. bzoj 2563 [2012国家集训队Round 1 day2] 阿狸和桃子的游戏 贪心

    正解:贪心 解题报告: 链接在这儿! 知道解法之后会jio的好像很简单的样子……其实挺难想到的QAQ 不过大佬讲了方法之后还是懂了 有一个很神仙的想法就是,你可以理解为每个点周围的边都有半个是自己的, ...

  5. bzoj 2563: 阿狸和桃子的游戏 贪心

    这个真的好巧妙啊~ 如果只考虑点权的话显然直接按照权值大小排序即可. 但是加入了边权,就有了一个决策的问题. 于是,我们将边权分一半,分给两个端点. 如果一个人拿了两个端点,则边权都会加上. 否则,边 ...

  6. poj3122-Pie(二分法+贪心思想)

    一,题意: 有f+1个人(包括自己),n块披萨pie,给你每块pie的半径,要你公平的把尽可能多的pie分给每一个人 而且每个人得到的pie来自一个pie,不能拼凑,多余的边角丢掉.二,思路: 1,输 ...

  7. poj1323-Game Prediction(贪心思想)

    贪心的思想:尽量的从最大值找起.然后在剩余之中,再从最大值找起. 一,题意: M个人,每人N张牌,每轮比较谁出的牌大,最大者为胜.现在给定M和N,以及你的牌,要求输出你至少能确保获得几轮的胜利 从&q ...

  8. HDU 4857 逃生(反向建边的拓扑排序+贪心思想)

    逃生 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submissi ...

  9. POJ 3687 Labeling Balls(反向拓扑+贪心思想!!!非常棒的一道题)

    Labeling Balls Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 16100   Accepted: 4726 D ...

随机推荐

  1. Luogu [P2814] 家谱

    题目链接 这个题不难,但是有点小小坑. 首先并查集肯定能看出来. 然后字符串的话,一开始我想用 hash 来处理,但想了想,离散化不好搞,人也太多了,一不小心就hash重了,还是算了. 然后就想到了S ...

  2. Redis学习记录(二)

    1.Key命令 设置key的过期时间. expire key second:设置key的过期时间 ttl key:查看key的有效期(如果显示正数说明该key正在倒计时,如果是-1说明该key永久保存 ...

  3. C#的接口基础教程之二 定义接口

    定义接口 从技术上讲,接口是一组包含了函数型方法的数据结构.通过这组数据结构,客户代码可以调用组件对象的功能. 定义接口的一般形式为: [attributes] [modifiers] interfa ...

  4. C# StreamWriter对像

    用FileWriter来随机读取文件是个好主意,而用StreamWriter可以直接把字符串写入文件中,它处理重要的转换和向FileStream对像写入工作.创建StreamWriter有很多方法: ...

  5. C# DateTime的使用

    获得当前系统时间: DateTime dt = DateTime.Now; Environment.TickCount可以得到“系统启动到现在”的毫秒值 DateTime now = DateTime ...

  6. 十七、MySQL UNION 操作符

    MySQL UNION 操作符 本教程为大家介绍 MySQL UNION 操作符的语法和实例. 描述 MySQL UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中.多 ...

  7. 初识redis-cluster

    安装redis [root@localhost ~]# cd /datas/soft/ [root@localhost soft]# ll redis-.tar.gz // 已经下载的最新版 -rwx ...

  8. Kali 安装VMtools(最新)

    老方法安装的VMtools不能进行主宿切换,下面是kali最新版安装VMtools的方法 一.换国内源&更新源 参考 Kali 2017更新源 二.安装VMtools apt-get inst ...

  9. [原]sencha touch之表单(login demo)

    现在来说说sencha touch中的表单,举个简单的login的例子,相关的说明我都放在了注释中,看下面代码 Ext.application({ id:'itKingApp', launch:fun ...

  10. 8 REST Framework 实现Web API 1

    1 参考博客: http://blog.csdn.net/SVALBARDKSY/article/details/50548073 2  准备工作 1. 环境 Python: Python 3.5 D ...