【BZOJ 4169】 4169: Lmc的游戏 (树形DP)
4169: Lmc的游戏
Time Limit: 10 Sec Memory Limit: 128 MB
Submit: 44 Solved: 25Description
RHL有一天看到lmc在玩一个游戏。"愚蠢的人类哟,what are you doing",RHL说。"我在玩一个游戏。现在这里有一个有n个结点的有根树,其中有m个叶子结点。这m个叶子从1到m分别被给予了一个号码,每个叶子的号码都是独一无二的。一开始根节点有一个棋子,两个玩家每次行动将棋子移动到当前节点的一个儿子节点。当棋子被移动到某个叶节点的时候游戏结束,这个叶节点的号码即为该局游戏的result。先手的玩家要最大化result,后手的玩家要最小化这个result。""你不先问一下我是谁吗 = =""那么,who are you""我是这个世界的创造者,维护者和毁灭者,整个宇宙的主宰,无所不知,无所不能的,三个字母都大写的RHL。""既然你这么厉害,那你一定知道,在两个玩家都无限聪明的情况下,在树的形态已知的情况下,在叶子的编号可以任意安排的情况下,游戏的result最大是多少咯。"Input
输入数据第一行有一个正整数n,表示结点的数量。n<=200000接下来n-1行,每行有两个正整数u和v,表示的父亲节点是u。Output
输出一行2个非负整数,分别表示result的最大值和最小值。Sample Input
5
1 2
1 3
2 4
2 5Sample Output
3 2
【样例解释】
有3,4,5三个叶子。若令3号叶子的编号是3,则先手可以移到3号结点,故result最大是3。若3号叶子的编号是2,
则先手可以移到3号结点,故result最小是2.HINT
Source
】$mn[x]=min(mn[x],mn[y])$;
也不知道怎么说。。
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
#define INF 0xfffffff
#define Maxn 200010 int mymax(int x,int y) {return x>y?x:y;}
int mymin(int x,int y) {return x<y?x:y;} int mx[Maxn],mn[Maxn]; struct node
{
int x,y,next;
}t[Maxn];
int first[Maxn],len;
void ins(int x,int y)
{
t[++len].x=x;t[len].y=y;
t[len].next=first[x];first[x]=len;
} int sm[Maxn];
void dfs(int x,int dep)
{
sm[x]=;
if(first[x]==)
{
sm[x]=;
mn[x]=mx[x]=;return;
}
for(int i=first[x];i;i=t[i].next)
{
int y=t[i].y;
dfs(y,dep^);
sm[x]+=sm[y];
}
mx[x]=;mn[x]=;
if(dep) mx[x]=,mn[x]=INF;
for(int i=first[x];i;i=t[i].next)
{
int y=t[i].y;
if(!dep)
{
mx[x]=mymax(mx[x],sm[x]-(sm[y]-mx[y]));
mn[x]+=mn[y];
}
else
{
mx[x]+=mx[y]-;
mn[x]=mymin(mn[x],mn[y]);
}
}
} int main()
{
int n;
scanf("%d",&n);
int rt=;
for(int i=;i<=n;i++) rt+=i;
len=;
memset(first,,sizeof(first));
for(int i=;i<n;i++)
{
int x,y;
scanf("%d%d",&x,&y);
ins(x,y);
rt-=y;
}
dfs(rt,);
printf("%d %d\n",mx[rt],mn[rt]);
return ;
}
【BZOJ 4169】 4169: Lmc的游戏 (树形DP)的更多相关文章
- P2016 战略游戏——树形DP大水题
P2016 战略游戏 树形DP 入门题吧(现在怎么是蓝色标签搞不懂): 注意是看见每一条边而不是每一个点(因为这里错了好几次): #include<cstdio> #include< ...
- BZOJ.3227.[SDOI2008]红黑树tree(树形DP 思路)
BZOJ orz MilkyWay天天做sxt! 首先可以树形DP:\(f[i][j][0/1]\)表示\(i\)个点的子树中,黑高度为\(j\),根节点为红/黑节点的最小红节点数(最大同理). 转移 ...
- BZOJ.2286.[SDOI2011]消耗战(虚树 树形DP)
题目链接 BZOJ 洛谷P2495 树形DP,对于每棵子树要么逐个删除其中要删除的边,要么直接断连向父节点的边. 如果当前点需要删除,那么直接断不需要再管子树. 复杂度O(m*n). 对于两个要删除的 ...
- [洛谷P2016] 战略游戏 (树形dp)
战略游戏 题目描述 Bob喜欢玩电脑游戏,特别是战略游戏.但是他经常无法找到快速玩过游戏的办法.现在他有个问题. 他要建立一个古城堡,城堡中的路形成一棵树.他要在这棵树的结点上放置最少数目的士兵,使得 ...
- 邱老师玩游戏(树形DP) UESTC - 1136
邱老师最近在玩一种战略游戏,在一个地图上,有N座城堡,每座城堡都有一定的宝物,在每次游戏中邱老师允许攻克M个城堡并获得里面的宝物. 但由于地理位置原因,有些城堡不能直接攻克,要攻克这些城堡必须先攻克其 ...
- P2016 战略游戏 (树形DP)
题目描述 Bob喜欢玩电脑游戏,特别是战略游戏.但是他经常无法找到快速玩过游戏的办法.现在他有个问题. 他要建立一个古城堡,城堡中的路形成一棵树.他要在这棵树的结点上放置最少数目的士兵,使得这些士兵能 ...
- BZOJ 2152 聪聪可可(树形DP)
聪聪和可可是兄弟俩,他们俩经常为了一些琐事打起来,例如家中只剩下最后一根冰棍而两人都想吃.两个人都想玩儿电脑(可是他们家只有一台电脑)……遇到这种问题,一般情况下石头剪刀布就好了,可是他们已经玩儿腻了 ...
- NOI Online 游戏 树形dp 广义容斥/二项式反演
LINK:游戏 还是过于弱鸡 没看出来是个二项式反演,虽然学过一遍 但印象不深刻. 二项式反演:有两种形式 一种是以恰好和至多的转换 一种是恰好和至少得转换. 设\(f_i\)表示至多的方案数 \(g ...
- bzoj 1060 [ZJOI2007]时态同步(树形DP)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1060 [题意] 求最少的增加量,使得以rt为根的树中由一个结点出发的所有到叶子结点的路 ...
- BZOJ 1509: [NOI2003]逃学的小孩( 树形dp )
树形dp求出某个点的最长3条链a,b,c(a>=b>=c), 然后以这个点为交点的最优解一定是a+2b+c.好像还有一种做法是求出树的直径然后乱搞... ----------------- ...
随机推荐
- 无聊,纯css写了个评分鼠标移入的效果
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- [php]禁用缓存
header("Expires: -1"); header("Cache-Control: no_cache"); header("pragma: n ...
- 【BZOJ】1741: [Usaco2005 nov]Asteroids 穿越小行星群
[题意]给定n*n网格,有k个物品,每次可以消灭一行或一列,求消灭掉所有物品的最少操作次数. [算法]二分图最小覆盖 [题解]此题是最小覆盖模型的出处. 将物品的x-y连边建立二分图. 最小覆盖:选择 ...
- Spring Boot微服务框架的搭建
(1)spring boot简介 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发 ...
- 【洛谷P1104】生日
题目描述 cjf君想调查学校OI组每个同学的生日,并按照从大到小的顺序排序.但cjf君最近作业很多,没有时间,所以请你帮她排序. 输入输出格式 输入格式: 有2行,第1行为OI组总人数n:第2行至第n ...
- 【洛谷 P4360】 [CEOI2004]锯木厂选址(斜率优化)
题目链接 一开始我的\(dp\)方程列错了,其实也不能说列错了,毕竟我交上去还是把暴力的分都拿到了,只是和题解的不一样,然后搞半天没搞出来去看题解,又看不懂,对不上,原来状态设置不一样自闭了. \(f ...
- 91.Decode Ways---dp
题目链接:https://leetcode.com/problems/decode-ways/description/ 题目大意:将给出的字符串解码,问有多少种解码方式.解码按照“ABC...Z&qu ...
- 【BubbleCup X】D. Exploration plan
这个题首先一眼能看出二分答案…… 毕竟连可爱的边界都给你了. 下面就是怎么check 首先预处理跑一遍floyed,预处理出最短路. 用网络流判断能否达到即可. #include<bits/st ...
- Weex 版扫雷游戏开发
扫雷是一个喜闻乐见的小游戏,今天在看 Weex 文档的过程中,无意中发现用 Weex 完全可以开发一个扫雷出来.当然这个扫雷和 Windows 那个有一点差距,不过麻雀虽小五脏俱全,随机布雷.自动挖雷 ...
- nodeJs 常用模块(一)
url url.parse() querystring querystring.parse( [string] , [分隔符] ) ,解析为js字面量 querystring.stringify() ...