HDU 5996 dingyeye loves stone ---BestCoder Round #90

题目链接

设根节点的深度为0,将所有深度为奇数的节点的石子数目xor起来,则先手必胜当且仅当这个xor和不为0。 证明同阶梯博弈。对于偶深度的点上的石子,若对手移动它们,则可模仿操作;对于奇深度上的石子,移动一次即进入偶深度的点。 时空复杂度O(n)。

用vector存搜一下就行。

#include <cstdio>
#include <iostream>
#include <vector>
#include <cstring>
using namespace std;
vector<int> v[100050];
int num[100050];
int ans;
void dfs(int i,int d)
{
    if(d&1) ans=ans^num[i];
    for(int j=0;j<v[i].size();j++)
    dfs(v[i][j],d+1);
}
int main()
{
    int t,n,x;
    scanf("%d",&t);
    while(t--)
    {
        ans=0;
        scanf("%d",&n);
        memset(num,0,sizeof(num));
        for(int i=0;i<n;i++)
        v[i].clear();
        for(int i=1;i<n;i++)
        {
            scanf("%d",&x);
            v[x].push_back(i);
        }
        for(int i=0;i<n;i++)
        scanf("%d",&num[i]);
        dfs(0,0);
        if(ans) puts("win");
        else puts("lose");
    }
    return 0;
}
时间: 2024-08-05 15:21:12

HDU 5996 dingyeye loves stone ---BestCoder Round #90的相关文章

hdu 5996 dingyeye loves stone(博弈)

题目链接:hdu 5996 dingyeye loves stone 题意: 给你一棵树,树的每一个节点有a[i]个石子,每个人可以将这个节点的石子移向它的父亲,如果没有合法操作,那么就算输,现在给你当前的局面,问你能否赢 题解: 设根节点的深度为0,将所有深度为奇数的节点的石子数目xor起来,则先手必胜当且仅当这个xor和不为0. 证明同阶梯博弈.对于偶深度的点上的石子,若对手移动它们,则可模仿操作:对于奇深度上的石子,移动一次即进入偶深度的点. 时空复杂度O(n). 1 #include<b

HDU 5996 dingyeye loves stone [阶梯Nim]

dingyeye喜欢和你玩石子游戏. dingyeye有一棵nn个节点的有根树,节点编号为00到n−1n−1,根为00号节点.游戏开始时,第ii个节点上有a[i]a[i]个石子.两位玩家轮流操作,每次操作玩家可以选择一个节点,并将该节点上的一些石子(个数不能为00)移动到它的父亲节点上去.如果轮到某位玩家时,该玩家没有任何合法的操作可以执行,则判负. 你在游戏中执先手,你想知道当前局面你能否必胜. 裸题... #include <iostream> #include <cstdio>

HDU 5995 Kblack loves flag ---BestCoder Round #90

题目链接 用两个布尔数组分别维护每个行/列是否被插过旗帜,最后枚举每一行.列统计答案即可.空间复杂度O(n+m),时间复杂度O(n+m+k). #include <cstdio> #include <iostream> #include <cstring> using namespace std; int t,ansx[1000005],ansy[1000005],ax,ay; const int _K=50268147,_B=6082187,_P=100000007;

HDU 5268 ZYB loves Score (BestCoder Round#44)

题目链接:ZYB loves Score 题面: ZYB loves Score Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 395    Accepted Submission(s): 232 Problem Description One day,ZYB participated in the BestCoder Contest

hdu 5230 ZCC loves hacking(BestCoder Round #41)

ZCC loves hacking                                                   Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 262144/131072 K (Java/Others) Total Submission(s): 126    Accepted Submission(s): 49 Problem Description Now, a Codefires roun

HDU5996:dingyeye loves stone

题目链接:dingyeye loves stone 题意:给出一棵树,树上的每个节点都有石子若干, 两人博弈,每次操作都可以把任意节点的任意石子数转移到它的父亲节点, 若无法操作则输,给出树上的节点及石子数,问先手是否能赢 分析:“阶梯博弈”,若深度为偶数的节点,对方移多少石子,我们就移多少.故偶数节点可忽略不计 接下来只要异或深度为奇数的节点石子数即可 感想:深度不会求,dfs不会写,我真菜 第一种方法. 记录每个节点的子节点,dfs遍历所有节点,若深度为奇则异或 1 #include<cst

BestCoder Round #90

有生以来第一场在COGS以外的地方打的比赛.挂成dog了. 主要是没有经验,加之代码能力过弱.还有最后的瞎hack三次,Too Young Too Simple...... 言归正传. (抄一发题解先) T1 Kblack loves flag 用两个布尔数组分别维护每个行/列是否被插过旗帜,最后枚举每一行.列统计答案即可.空间复杂度O(n+m),时间复杂度O(n+m+k). T2 dingyeye loves stone 设根节点的深度为0,将所有深度为奇数的节点的石子数目xor起来,则先手必

BestCoder Round #90 //div all 大混战 一题滚粗 阶梯博弈,树状数组,高斯消元

BestCoder Round #90 本次至少暴露出三个知识点爆炸.... A. zz题 按题意copy  Init函数 然后统计就ok B. 博弈 题  不懂  推了半天的SG.....  结果这个题.... C 数据结构题   我写了半个小时分块   然后发现     改的是颜色.... 我的天  炸炸炸 D. 没看懂题目要干啥.....  官方题解要搞死小圆

HDU-5194-DZY Loves Balls(BestCoder Round # 35 )

DZY Loves Balls Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 374    Accepted Submission(s): 205 Problem Description There are n black balls and m white balls in the big box. Now, DZY starts