终于有道我会的了。。。

int f[2][maxn],g[2][maxn],tot[maxn];//构造叶子编号时希望最大/小result 先手取子树最小/大的编号的排名

tot是子树中叶子个数

如果希望最大,可以理解为叶子的编号是为了先手取最大时构造,而且要故意去卡取最小

f[0][x]=(∑f[1][y]-1)+1  取最小时可以把每个孩子的前f[1][y]-1个排名放最小的数,那么下一个一定会被选所以+1

f[1][x]=max(f[0][y]+tot[x]-tot[y])  因为要取最大,假如选择了y转移,其他子树的值可以全部设为比y的子树中的点小,然后再加上选y的排名

g也是同理推理的

g[0][x]=min(g[1][y]),g[1][x]=∑g[0][y]

#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;
const int _=1e2;
const int maxn=*1e5+_; struct node
{
int x,y,next;
}a[maxn];int len,last[maxn];
void ins(int x,int y)
{
len++;
a[len].x=x;a[len].y=y;
a[len].next=last[x];last[x]=len;
}
int f[][maxn],g[][maxn],tot[maxn];//构造叶子编号时希望最大/小result 先手取子树最小/大的编号的排名
void dfs(int x)
{
if(last[x]==){f[][x]=f[][x]=g[][x]=g[][x]=;tot[x]=;return ;}
f[][x]=;
f[][x]=-(<<);
g[][x]=(<<);
g[][x]=;
for(int k=last[x];k;k=a[k].next)
{
int y=a[k].y;
dfs(y);
f[][x]+=f[][y]-;
f[][x]=max(f[][x],f[][y]-tot[y]);
g[][x]=min(g[][x],g[][y]);
g[][x]+=g[][y];
tot[x]+=tot[y];
}
f[][x]+=tot[x];
} int main()
{
freopen("a.in","r",stdin);
freopen("a.out","w",stdout);
int n,x,y;
scanf("%d",&n);
for(int i=;i<n;i++)
{
scanf("%d%d",&x,&y);
ins(x,y);
}
dfs();
printf("%d %d\n",f[][],g[][]); return ;
}

bzoj4169: Lmc的游戏的更多相关文章

  1. 【BZOJ 4169】 4169: Lmc的游戏 (树形DP)

    4169: Lmc的游戏 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 44  Solved: 25 Description RHL有一天看到lmc在 ...

  2. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  3. Chrome自带恐龙小游戏的源码研究(一)

    目录 Chrome自带恐龙小游戏的源码研究(一)——绘制地面 Chrome自带恐龙小游戏的源码研究(二)——绘制云朵 Chrome自带恐龙小游戏的源码研究(三)——昼夜交替 Chrome自带恐龙小游戏 ...

  4. 使用HTML5开发Kinect体感游戏

    一.简介 我们要做的是怎样一款游戏? 在前不久成都TGC2016展会上,我们开发了一款<火影忍者手游>的体感游戏,主要模拟手游章节<九尾袭来 >,用户化身四代,与九尾进行对决, ...

  5. jQuery实践-网页版2048小游戏

    ▓▓▓▓▓▓ 大致介绍 看了一个实现网页版2048小游戏的视频,觉得能做出自己以前喜欢玩的小游戏很有意思便自己动手试了试,真正的验证了这句话-不要以为你以为的就是你以为的,看视频时觉得看懂了,会写了, ...

  6. Unity游戏内版本更新

    最近研究了一下游戏内apk包更新的方法. ios对于应用的管理比较严格,除非热更新脚本,不太可能做到端内大版本包的更新.然而安卓端则没有此限制.因此可以做到不跳到网页或应用商店,就覆盖更新apk包. ...

  7. 游戏服务器菜鸟之C#初探一游戏服务

    本人80后程序猿一枚,原来搞过C++/Java/C#,因为工作原因最后选择一直从事C#开发,因为读书时候对游戏一直比较感兴趣,机缘巧合公司做一个手游的项目,我就开始游戏服务器的折腾之旅. 游戏的构架是 ...

  8. iOS审核这些坑,腾讯游戏也踩过

    作者:Jamie,专项技术测试工程师,在iOS预审和ASO优化领域从事专项测试相关工作,为腾讯游戏近100个产品提供专项服务. WeTest 导读 在App上架苹果应用商店的过程中,相信大多数iOS开 ...

  9. 漫谈C#编程语言在游戏领域的应用

    0x00 前言 随着微软越来越开放,C#也变得越来越吸引人们的眼球.而在游戏行业中,C#也开始慢慢地获得了关注.这不, 网易绝代双娇手游团队已经全面使用.Net Core支持前后端统一C#开发,跨平台 ...

随机推荐

  1. UVa10491 Cows and Cars

    #include<iostream> #include<cstdio> #include<algorithm> int main(){ double a,b,c; ...

  2. 森林 BZOJ 3123

    题解: 第k大直接用主席树解决 合并利用启发式合并,将较小的连接到较大的树上 #include<cmath> #include<cstdio> #include<cstd ...

  3. Virnish使用

    缓存基础原理 程序具有局部性 时间局部性 空间局部性 key-value 形式存储数据 key 访问路径.URL.hash value web content 命中率 hit/(hit+miss) 文 ...

  4. Oracle 12c在SQL Devolper中添加cdb和pdb连接

    Oracle 12c如果按默认流程安装的话会有一个叫orcl的cdb容器和一个叫pdborcld的pdb容器 一.连接名为orcl的cdb容器 连接名:localorcl 用户名:SYS 口令:Ora ...

  5. git(三):第一次github了解使用

    第一次使用github,看了一下使用说明,创建第一个repository,以后还要多学习. 一.Github创建一个新仓库 ······Creat a new repository 创建一个新仓库,点 ...

  6. Flink的安装配置

    一. Flink的下载 安装包下载地址:http://flink.apache.org/downloads.html  ,选择对应Hadoop的Flink版本下载 [admin@node21 soft ...

  7. 使用图片作为textview组件的背景

    <TextView android:layout_gravity="center" android:layout_width="100dp" androi ...

  8. setState 是异步的

    1.解决 setState 异步问题 // 查询 handleSearch(e){ // 禁止默认行为 e.preventDefault(); // 获取 form 表单的值 this.setStat ...

  9. openwrt procd

    接着前面写过的一篇关于 procd 的笔记. procd 在 STATE_INIT 时会运行 /etc/inittab 中描述的几个级别指定程序. procd_inittab_run("re ...

  10. Jquery-easyui的默认图标的使用,以及如何添加自己想要的图标

    easyui的默认图标有以下这些: .icon-blank{ background:url('icons/blank.gif') no-repeat; } .icon-add{ background: ...