HDU5996:dingyeye loves stone
题目链接:dingyeye loves stone
题意:给出一棵树,树上的每个节点都有石子若干,
两人博弈,每次操作都可以把任意节点的任意石子数转移到它的父亲节点,
若无法操作则输,给出树上的节点及石子数,问先手是否能赢
分析:“阶梯博弈”,若深度为偶数的节点,对方移多少石子,我们就移多少。故偶数节点可忽略不计
接下来只要异或深度为奇数的节点石子数即可
感想:深度不会求,dfs不会写,我真菜
第一种方法.
记录每个节点的子节点,dfs遍历所有节点,若深度为奇则异或
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<vector>
using namespace std; typedef long long ll;
int t,n,x,value[],dep[]; ll ans; vector<int>g[];
void dfs(int i,int d)
{
if(d) ans^=value[i];
for(int j=;j<g[i].size();++j) dfs(g[i][j],d^);
} int main()
{
for(scanf("%d",&t);t--;)
{
scanf("%d",&n);
for(int i=;i<n;++i) g[i].clear();
for(int i=;i<n;++i)
{
scanf("%d",&x);
g[x].push_back(i);
}
//memset(censhu,0,sizeof(censhu));
//fa[0]=0;
for(int i=;i<n;++i) scanf("%d",value+i);ans=;
dfs(,);
if(ans) puts("win");else puts("lose");
}
return ;
} /*
int main()
{
for(scanf("%d",&t);t--;)
{
scanf("%d",&n);
memset(dep,0,sizeof(dep));
for(int i=1;i<n;++i)
{
scanf("%d",&x);
dep[i]=dep[x]+1;
}
//memset(censhu,0,sizeof(censhu));
//fa[0]=0;
ans=0;
for(int i=0;i<n;++i) {scanf("%d",value+i);if(dep[i]&1) ans^=value[i];}
if(ans) puts("win");else puts("lose");
}
return 0;
}
*/
第二种方法.
读入每个节点的父亲时,记录深度,题目保证父亲出现在子节点前
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<vector>
using namespace std; typedef long long ll;
int t,n,x,value[],dep[]; ll ans;
/*
vector<int>g[100010];
void dfs(int i,int d)
{
if(d) ans^=value[i];
for(int j=0;j<g[i].size();++j) dfs(g[i][j],d^1);
} int main()
{
for(scanf("%d",&t);t--;)
{
scanf("%d",&n);
for(int i=0;i<n;++i) g[i].clear();
for(int i=1;i<n;++i)
{
scanf("%d",&x);
g[x].push_back(i);
}
//memset(censhu,0,sizeof(censhu));
//fa[0]=0;
for(int i=0;i<n;++i) scanf("%d",value+i);ans=0;
dfs(0,0);
if(ans) puts("win");else puts("lose");
}
return 0;
}
*/ int main()
{
for(scanf("%d",&t);t--;)
{
scanf("%d",&n);
memset(dep,,sizeof(dep));
for(int i=;i<n;++i)
{
scanf("%d",&x);
dep[i]=dep[x]+;
}
//memset(censhu,0,sizeof(censhu));
//fa[0]=0;
ans=;
for(int i=;i<n;++i) {scanf("%d",value+i);if(dep[i]&) ans^=value[i];}
if(ans) puts("win");else puts("lose");
}
return ;
}
HDU5996:dingyeye loves stone的更多相关文章
- hdu 5996 dingyeye loves stone(博弈)
题目链接:hdu 5996 dingyeye loves stone 题意: 给你一棵树,树的每一个节点有a[i]个石子,每个人可以将这个节点的石子移向它的父亲,如果没有合法操作,那么就算输,现在给你 ...
- 【hdu 5996】dingyeye loves stone
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Submission(s) ...
- HDU 5996 dingyeye loves stone [阶梯Nim]
dingyeye喜欢和你玩石子游戏. dingyeye有一棵nn个节点的有根树,节点编号为00到n−1n−1,根为00号节点.游戏开始时,第ii个节点上有a[i]a[i]个石子.两位玩家轮流操作,每次 ...
- 【HDOJ5996】dingyeye loves stone(Nim游戏)
题意:dingyeye喜欢和你玩石子游戏.dingyeye有一棵n个节点的有根树,节点编号为0到n−1,根为0号节点. 游戏开始时,第i个节点上有a[i]个石子.两位玩家轮流操作,每次操作玩家可以选择 ...
- HDU 5996 dingyeye loves stone ---BestCoder Round #90
题目链接 设根节点的深度为0,将所有深度为奇数的节点的石子数目xor起来,则先手必胜当且仅当这个xor和不为0. 证明同阶梯博弈.对于偶深度的点上的石子,若对手移动它们,则可模仿操作:对于奇深度上的石 ...
- HDU 5996:dingyeye loves stone(阶梯博弈)
http://acm.hdu.edu.cn/showproblem.php?pid=5996 题意:在一棵树上进行博弈,每次只能将当前的结点的石子放到父节点上,最后不能移动的输. 思路:比赛的时候想的 ...
- BestCoder Round #90
有生以来第一场在COGS以外的地方打的比赛.挂成dog了. 主要是没有经验,加之代码能力过弱.还有最后的瞎hack三次,Too Young Too Simple...... 言归正传. (抄一发题解先 ...
- BestCoder Round #90 A+B题解!
BestCoder Round #90 A Kblack loves flag 题意有点迷不造思路很简单但不造怎么求随机数,纠结了一会后直接粘上题目所给的代码稍加修改A了. const int _K ...
- HDOJ 4248 A Famous Stone Collector DP
DP: dp[i][j]前i堆放j序列长度有多少行法, dp[i][j]=dp[i-1][j] (不用第i堆), dp[i][j]+=dp[i-1][j-k]*C[j][k] (用第i堆的k个石头) ...
随机推荐
- msp430入门编程42
msp430中C语言的软件工程--事件触发程序结构
- Linux MTD (Memory Technology Device) subsystem analysis -For Atheros char device
Linux MTD (Memory Technology Device) subsystem analysis For Atheros char device 读了Linux MTD 源代码分析 对这 ...
- BNUOJ Eeny Meeny Moo
Eeny Meeny Moo Time Limit: 1000ms Memory Limit: 65535KB 大家都有这种经验,当太多的人同时使用互联网的时候 ...
- Java学习--反码 原码 补码简析
关于课上实验中对小数的处理中出现的问题涉及到原码,反码,补码的问题,所以在网上进行了一下搜索.在原码,反码,补码中的解释可得知,无论是哪一种码,能够表示的数的范围是-2^(位数-1)+1至2^(位数- ...
- Hadoop架构设计、执行原理具体解释
1.Map-Reduce的逻辑过程 如果我们须要处理一批有关天气的数据.其格式例如以下: 依照ASCII码存储.每行一条记录 每一行字符从0開始计数,第15个到第18个字符为年 第25个到第29个字符 ...
- activiti自己定义流程之自己定义表单(二):创建表单
注:环境配置:activiti自己定义流程之自己定义表单(一):环境配置 在上一节自己定义表单环境搭建好以后,我就正式開始尝试自己创建表单,在后台的处理就比較常规,主要是针对ueditor插件的功能在 ...
- poj1161Post Office【经典dp】
题目:poj1161Post Officeid=1160" target="_blank">点击打开链接 题意:给出一条直线上的n个坐标表示村庄的位置,然后要在上面 ...
- 大型网站技术架构(四)--核心架构要素 开启mac上印象笔记的代码块 大型网站技术架构(三)--架构模式 JDK8 stream toMap() java.lang.IllegalStateException: Duplicate key异常解决(key重复)
大型网站技术架构(四)--核心架构要素 作者:13GitHub:https://github.com/ZHENFENG13版权声明:本文为原创文章,未经允许不得转载.此篇已收录至<大型网站技 ...
- 《TCP/IP具体解释》读书笔记(22章)-TCP的坚持定时器
TCP通过让接收方指明希望从发送方接收的数据字节数(即窗体大小)来进行流量控制. 假设窗体大小为0会发生什么情况呢?这将有效阻止发送方传送数据,直到窗体变为非0为止. ACK的传输并不可靠,也就是说, ...
- 微软Build2016:Xamarin杂记
去年的Build2015技术大会.留给人印象最深的莫过是Windows 10在手机端.PC端.Xbox等硬件平台上的大一统.还有非常具有科幻气质的HoloLens技术的各种展示.去年尽管也展示了Xam ...