阿狸和桃子的游戏题解

阿狸和桃子的游戏题解

每一道代码简单的黑题都有着诡异的思想,真不知道出题者怎么想的。

而这道题的重点在于把边权转换为点权,

此题的方式是将边权w平均分给被连接的两点u和v。

若u和v都被一人选择,则他的分数较不加边权前多了w/2+w/2=w,

若被不同的人选择,分数差多了(ans1+w/2)-(ans2-w/2)=ans1-ans2

并不会对答案有什么影响。

所以,最优策略? 肯定选择点权最大的了。

排序后依次选择即可。

#include<bits/stdc++.h>
using namespace std;
const int N=100006;
int n,m,t1,t2,t3;
double f[N],ans[2];
inline int read(){
   int T=0,F=1; char ch=getchar();
   while(ch<'0'||ch>'9'){if(ch=='-') F=-1; ch=getchar();}
   while(ch>='0'&&ch<='9') T=(T<<3)+(T<<1)+(ch-48),ch=getchar();
   return F*T;
}
bool cmp(double u,double v){return u>v;}
int main(){
    n=read(),m=read();
    for(int i=1;i<=n;++i) t1=read(),f[i]=1.00*t1;
    for(int i=1;i<=m;++i) t1=read(),t2=read(),t3=read(),f[t1]+=0.50000*t3,f[t2]+=0.5000000*t3;
    sort(f+1,f+n+1,cmp);
    for(int i=1;i<=n;++i) ans[i&1]+=f[i];
    t1=(int)(ans[1]-ans[0]),printf("%d\n",t1);
    return 0;
}

原文地址:https://www.cnblogs.com/ljk123-de-bo-ke/p/11317512.html

时间: 2024-08-25 23:47:34

阿狸和桃子的游戏题解的相关文章

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】阿狸和桃子的游戏 贪心

依然加链接 #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

bzoj2563阿狸和桃子的游戏

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

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 阿狸和桃子的游戏 贪心

题目大意:给定一张无向图,每个点有点权,每条边有边权,两个人轮流选择点,若一条边的两端点被选择则这条边被选择,两人都想自己的得分-对手的得分最大,求最终先手得分-后手得分 考虑先手选择每个点对答案的影响 一个点如果不选,本身对答案的贡献是-w 一个点如果选,本身对答案的贡献是w 一条边如果两个端点都不选,对答案的贡献是-c 如果两个端点中只选择一个,对答案的贡献是0 如果两个端点都选,对答案的贡献是c 那么我们先预先把所有的权值都在初始答案中减掉,然后就变成了: 一个点如果不选,本身对答案的贡献

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

codevs 1512 转向游戏 题解

Codevs 1512转向游戏 题解 时间限制: 1 s 空间限制: 1000 KB 题目等级 : 白银 Silver 题解 题目描述 Description 小明自认为方向感很好,请小红来测试.小红先让小明面对北方立正站好,然后发出"向左转""向右转"或"向后转"的命令.每个命令执行后,小明都正确地说出了他面对的方向.小红的命令共N个(1≤n≤10000),请你统计小明说[南]的次数. 命令是以数字方式表达: 0---向左转 1---向右转 2

bzoj 1874 取石子游戏 题解 &amp; SG函数初探

[原题] 1874: [BeiJing2009 WinterCamp]取石子游戏 Time Limit: 5 Sec  Memory Limit: 162 MB Submit: 334  Solved: 122 [Submit][Status] Description 小H和小Z正在玩一个取石子游戏. 取石子游戏的规则是这样的,每个人每次可以从一堆石子中取出若干个石子,每次取石子的个数有限制,谁不能取石子时就会输掉游戏. 小H先进行操作,他想问你他是否有必胜策略,如果有,第一步如何取石子. In

洛谷 P1005 矩阵取数游戏 题解

此文为博主原创题解,转载时请通知博主,并把原文链接放在正文醒目位置. 题目链接:https://www.luogu.org/problem/show?pid=1005 题目描述 帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的n*m的矩阵,矩阵中的每个元素aij均为非负整数.游戏规则如下: 1.每次取数时须从每行各取走一个元素,共n个.m次后取完矩阵所有元素: 2.每次取走的各个元素只能是该元素所在行的行首或行尾: 3.每次取数都有一个得分值,为每行取数的得分之和,每行取数的得分 = 被取走的元