Description 阿狸和桃子正在玩一个游戏,游戏是在一个带权图G=(V, E)上进行的,设节点权值为w(v),边权为c(e).游戏规则是这样的: 1. 阿狸和桃子轮流将图中的顶点染色,阿狸会将顶点染成红色,桃子会将顶点染成粉色.已经被染过色的点不能再染了,而且每一轮都必须给一个且仅一个顶点染色. 2. 为了保证公平性,节点的个数N为偶数. 3. 经过N/2轮游戏之后,两人都得到了一个顶点集合.对于顶点集合S,得分计算方式为 . 由于阿狸石头剪子布输给了桃子,所以桃子先染色.两人都想要使自己…
2563: 阿狸和桃子的游戏 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 952  Solved: 682[Submit][Status][Discuss] Description 阿狸和桃子正在玩一个游戏,游戏是在一个带权图G=(V, E)上进行的,设节点权值为w(v),边权为c(e).游戏规则是这样的: 1. 阿狸和桃子轮流将图中的顶点染色,阿狸会将顶点染成红色,桃子会将顶点染成粉色.已经被染过色的点不能再染了,而且每一轮都必须给一个且仅一个…
题目描述 阿狸和桃子正在玩一个游戏,游戏是在一个带权图G=(V, E)上进行的,设节点权值为w(v),边权为c(e).游戏规则是这样的:1. 阿狸和桃子轮流将图中的顶点染色,阿狸会将顶点染成红色,桃子会将顶点染成粉色.已经被染过色的点不能再染了,而且每一轮都必须给一个且仅一个顶点染色.2. 为了保证公平性,节点的个数N为偶数.3. 经过N/2轮游戏之后,两人都得到了一个顶点集合.对于顶点集合S,得分计算方式为由于阿狸石头剪子布输给了桃子,所以桃子先染色.两人都想要使自己的分数比对方多,且多得越多…
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轮游戏之…
正解:贪心 解题报告: 链接在这儿! 知道解法之后会jio的好像很简单的样子……其实挺难想到的QAQ 不过大佬讲了方法之后还是懂了 有一个很神仙的想法就是,你可以理解为每个点周围的边都有半个是自己的,然后就会变成这样: 如果我只选了一个点,这条边上另一个点就一定是对手选了,那就是0.5-0.5=0 如果我两个都选了,那就是0.5+0.5=1 如果我两个都没选,那就一定是对手选了,所以是-0.5-0.5=-1 然后你就会惊喜地发现!这两个人的选择是互相独立互不干扰的了!(因为要求最优明白吧?)然后…
这个真的好巧妙啊~ 如果只考虑点权的话显然直接按照权值大小排序即可. 但是加入了边权,就有了一个决策的问题. 于是,我们将边权分一半,分给两个端点. 如果一个人拿了两个端点,则边权都会加上. 否则,边权会抵消. 直接按照点权+一半边权排序即可. code: #include <bits/stdc++.h> #define N 100004 #define LL long long using namespace std; void setIO(string s) { string in=s+&…
题目传送门:bzoj2563 先膜拜一波PoPoQQQ的题解:BZOJ 2563 阿狸和桃子的游戏 贪心 其实我们可以这样看:把一条边的权值均分到两个端点,那么取到两个端点就能得到这条边的边权,如果只取一个就两个人抵消了. 于是直接算实际点权,排个序轮流取最大就行了. (但是我还是看了PoPoQQQ的题解后按里面的分析方法写的) 代码: #include<cstdio> #include<algorithm> #include<functional> #define m…
[BZOJ2563]阿狸和桃子的游戏(贪心) 题面 BZOJ 题解 边权平均分给两个点就好了. #include<iostream> #include<cstdio> #include<algorithm> using namespace std; #define MAX 10100 inline int read() { int x=0;bool t=false;char ch=getchar(); while((ch<'0'||ch>'9')&&…
2563: 阿狸和桃子的游戏 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 970  Solved: 695[Submit][Status][Discuss] Description 阿狸和桃子正在玩一个游戏,游戏是在一个带权图G=(V, E)上进行的,设节点权值为w(v),边权为c(e).游戏规则是这样的: 1. 阿狸和桃子轮流将图中的顶点染色,阿狸会将顶点染成红色,桃子会将顶点染成粉色.已经被染过色的点不能再染了,而且每一轮都必须给一个且仅一个…
http://www.lydsy.com/JudgeOnline/problem.php?id=2563 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 978  Solved: 702[Submit][Status][Discuss] Description 阿狸和桃子正在玩一个游戏,游戏是在一个带权图G=(V, E)上进行的,设节点权值为w(v),边权为c(e).游戏规则是这样的: 1. 阿狸和桃子轮流将图中的顶点染色,阿狸会将顶点染成红色,桃子…
思维题,好题 把每条边的边权平分到这条边的两个顶点上,之后就是个sb贪心了 正确性证明: 如果一条边的两个顶点被一个人选了,一整条边的贡献就凑齐了 如果分别被两个人选了,一作差就抵消了,相当于谁都没有 代码 #include <bits/stdc++.h> #define rep(i,x,y) for(i=(x);i<=(y);++i) using namespace std; double a[10010]; int main(){ int n,m,i,x,y,z; double an…
题目 非常妙的题目,一看到就以为是一道博弈,之后就不会做了 正解非常巧妙,由于我们只需要求出最后两个人得分的差值,所以对于每一条边我们将其的权值拆成两边,分给其连接的两个点 如果这两个点被同一个人选择,那么这条边的边权就会加到最后这个人的总得分里去,如果被两个人分别选择,那么两个人每个人都获得了权值的一半,对最后的差值没有什么影响 所以拆分边权之后排序就好了,非常显然每个人都要选择点权最大的点 代码 #include<iostream> #include<cstring> #inc…
题目链接:洛谷 这道题乍一看非常的难,而且题目标题上的标签让人很害怕. 但其实这道题并不难写(只要想到了...emm) 因为我们只需要知道两个人得分之差,所以我们可以对条件进行变换. 我们将边权平分到边两端的节点,取到了一个点也相当于取到了点权加上一半的边权,则发现对于边$(u,v)$有以下四种情况: 1.桃子取到了$u$和$v$,这时这两点的贡献为$w(u)+w(v)+c(u,v)/2+c(u,v)/2=w(u)+w(v)+c(u,v)$,与原来相同. 2.桃子取到了$u$,阿狸取到了$v$,…
题解 传送门 既然题目要求的是差值 所以对于减数和被减数同时加上一个相同的数是毫无影响的 (详情参考人教版六年级上册数学教材) 所以不妨把边权分成两半 分别加给两个顶点 然后,直接每次选最大的点就好了 代码 #include<bits/stdc++.h> using namespace std; #define re register #define ll long long #define in inline #define get getchar() #define db double i…
开始写了一些东西但是后来浏览器挂了就没有存下来简直!!!!!!!!!!!!!QAQ 不想再写一遍了...总之是简单贪心. #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> #define MAXN 10005 using namespace std; int n, m, a[MAXN], w, ans; in…
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;…
传送门 这题看一眼就很不可做 考虑对于任意一个最终状态,对于一条边的贡献分成三种情况 如果此边连接的两点属于 $A$,那么对 $A$ 的贡献就是边权 $w$,即对答案的贡献为 $+w$ 如果两点都属于 $B$,对 $B$ 的贡献就是边权 $w$,对答案的贡献为 $-w$ 如果两点属于两人,那么对答案的贡献为 $0$ 考虑固定所有点的贡献,发现如果把点权加上所有与它相邻边的边权除二 那么如果此边两点都是同一个人则对答案的贡献也还是 $+-w$ 如果两点属于不同一个人,那么边的价值恰好抵消,对答案的…
正题 题目链接:https://www.luogu.com.cn/problem/P4643 题目大意 给出\(n\)个点\(m\)条边的无向图,两个人轮流选择一个未被选择的点加入点集. 然后每个人的权值为选出的点的导出子图点权加边权和. 两个人都希望自己的权值减去对方的权值最大 求先手的权值减去后手的权值 \(1\leq n\leq 10^4,1\leq m\leq 10^5\) 解题思路 结论就是把边权均分到点权处. 证明的话假设两个点之间的点权为\(w\). 那么如果两边颜色不同那么这个均…
luoguP2123 皇后游戏(贪心) 题目 洛谷题目chuanso 题解 有一篇好题解,我就懒得推式子了,毕竟打到电脑上还是很难的 牛逼题解传送门 code #include<iostream> #include<cstdlib> #include<cstdio> #include<cmath> #include<cstring> #include<iomanip> #include<algorithm> #includ…
颓!颓!颓!(bushi 前传: 贪心/构造/DP 杂题选做 贪心/构造/DP 杂题选做Ⅱ 51. CF758E Broken Tree 讲个笑话,这道题是 11.3 模拟赛的 T2,模拟赛里那道题的名字叫猛张(orz ztr),而我刚好在 11.4 把这题 A 了.乍一看好像也没啥问题,不过模拟赛时间是 2020.11.3,而我 AC 这道题的时间是 2021.11.4((( 首先看到这样的题我们肯定会想到贪心,具体来说我们 DFS 一遍整棵树,DFS 到一个节点 \(x\) 时,我们考虑用最…
题目传送门 /* 贪心+构造:因为是对称的,可以全都左一半考虑,过程很简单,但是能想到就很难了 */ /************************************************ Author :Running_Time Created Time :2015-8-3 9:14:02 File Name :B.cpp *************************************************/ #include <cstdio> #include &…
本博客将会收录一些贪心/构造的我认为较有价值的题目,这样可以有效的避免日后碰到 P7115 或者 P7915 这样的题就束手无策进而垫底的情况/dk 某些题目虽然跟贪心关系不大,但是在 CF 上有个 greedy 的 tag,这种题目大概率也会被我收录进来(比方说这篇博客里大概率会收录不少 DP 题,因为 CF 上不少 DP 题都莫名其妙地打上了一个 greedy 的 tag 1. CF1592F1 Alice and Recoloring 1 首先很明显我们不会选择翻转包含 \((1,m),(…
由于换了台电脑,而我的贪心 & 构造能力依然很拉跨,所以决定再开一个坑( 前传: 贪心/构造/DP 杂题选做 u1s1 我预感还有Ⅲ(欸,这不是我在多项式Ⅱ中说过的原话吗) 24. P5912 [POI2004]JAS 一开始直接莽了个点分治,当我测过了样例美滋滋地一交,发现自己获得了 20 分的好成绩之后,才发现事情有那么亿点点不对劲( 不难发现,题目等价于求高度最小的点分树的高度,直接求有点困难,我们不妨来对其进行一些转化:我们考虑给每个点一个标号,那么问题可以转化为,求使得任意两个标号相同…
题目描述 恰逢 HH国国庆,国王邀请nn 位大臣来玩一个有奖游戏.首先,他让每个大臣在左.右手上面分别写下一个整数,国王自己也在左.右手上各写一个整数.然后,让这 nn 位大臣排成一排,国王站在队伍的最前面.排好队后,所有的大臣都会获得国王奖赏的若干金币,每位大臣获得的金币数分别是:排在该大臣前面的所有人的左手上的数的乘积除以他自己右手上的数,然后向下取整得到的结果. 国王不希望某一个大臣获得特别多的奖赏,所以他想请你帮他重新安排一下队伍的顺序,使得获得奖赏最多的大臣,所获奖赏尽可能的少.注意,…
lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当他使用某种装备时,他只能使用该装备的某一个属性.并且每种装备最多只能使用一次. 游戏进行到最后,lxhgww遇到了终极boss,这个终极boss很奇怪,攻击他的装备所使用的属性值必须从1开始连续递增地攻击,才能对boss产生伤害.也就是说一开始的时候,lxhgww只能使用某个属性值为1的装备攻击boss,然后只能使用某个属性值为2的装备攻击boss,然后只能使用某个属…
国王游戏 题目链接:国王游戏 ps:题目数据说明了要写高精度. 这个题的答案是\(a.l * a.r < b.l * b.r\)按照这个进行排序 题解中大部分只是如何证明排序是: \(a.l * a.r < b.l * b.r\) 我来利用上面的贪心性质来推一下. 设国王左手的数为L,右手的数没什么用..... 还是对于两个人来说. 答案为: 第一个人排在第一位,第二个人排在第二位. 第二个人排在第一位,第二个人排在第一位. 两种情况下的结果大的那个是不会被选择的排在第一位的. 也就是 如果\…
题目链接:P2123 皇后游戏 如果证明这个题为什么是贪心的话,我是不会的,但是一看这个题目就是一个贪心,然后满足贪心的性质: 都能从两个人(东西)扩展到n个人(东西) 一定能从相邻状态扩展到不相邻的状态 ---摘自rain_falls 其实就是满足贪心的题目一定满足两个人的情况,就是由两个人推广到n个人. 我们先想一下两个人时的情况. 答案就是这个: \(min(max(a_1+b1,a_1+a_2)+b_2,max(a_2+b_2,a_1+a_2)+b_1)\) 如果前一项小那么就让第一个人…
题目来源:洛谷 题目描述 恰逢 H国国庆,国王邀请n 位大臣来玩一个有奖游戏.首先,他让每个大臣在左.右手上面分别写下一个整数,国王自己也在左.右手上各写一个整数.然后,让这 n 位大臣排成一排,国王站在队伍的最前面.排好队后,所有的大臣都会获得国王奖赏的若干金币,每位大臣获得的金币数分别是:排在该大臣前面的所有人的左手上的数的乘积除以他自己右手上的数,然后向下取整得到的结果. 国王不希望某一个大臣获得特别多的奖赏,所以他想请你帮他重新安排一下队伍的顺序,使得获得奖赏最多的大臣,所获奖赏尽可能的…
题目链接: https://vijos.org/p/1779 https://www.luogu.org/problem/show?pid=1080 http://codevs.cn/problem/1198/ 终于过了.....这道高精度总算是过了,为了这道题我还特意去学了高精度除以搞精度(虽然最后只需要高精度除以低精度) 这道题都是看新番国王游戏的时候突发奇想跑来做的QAQ.... 这道题的贪心思路是,按照左右手相乘来从小到大排序,乘积相同就按照右手从小到大... 至于为什么这么贪心,我个人…
SCOI 2010 连续攻击游戏 solution 直接就硬刚 我愿称贪心为暴力 因为题目中要求一定从小到大贪心,那么当前点的下标有能够选取的较大点,那么它一定可以和前面的一个较小点连接,所以可以直接选取这个点 若你选的当前点是较小点,那么就需要考虑后面的怎么往上接才能使得答案最优.感性理解一下,答案应该在较大点密集的地方,然后往后找到较大点等于后面的较小点,然后就像当于接住了(就那个感觉,能明白吗),连起来之后形成的最长的链的长度就是最优的答案了 为了避免爆掉数组,我们采用的vector,自动…