• Codeforces 931.D Peculiar apple-tree


    D. Peculiar apple-tree
    time limit per test
    1 second
    memory limit per test
    256 megabytes
    input
    standard input
    output
    standard output

    In Arcady's garden there grows a peculiar apple-tree that fruits one time per year. Its peculiarity can be explained in following way: there are n inflorescences, numbered from 1 to n. Inflorescence number 1 is situated near base of tree and any other inflorescence with number i(i > 1) is situated at the top of branch, which bottom is pi-th inflorescence and pi < i.

    Once tree starts fruiting, there appears exactly one apple in each inflorescence. The same moment as apples appear, they start to roll down along branches to the very base of tree. Each second all apples, except ones in first inflorescence simultaneously roll down one branch closer to tree base, e.g. apple in a-th inflorescence gets to pa-th inflorescence. Apples that end up in first inflorescence are gathered by Arcady in exactly the same moment. Second peculiarity of this tree is that once two apples are in same inflorescence they annihilate. This happens with each pair of apples, e.g. if there are 5 apples in same inflorescence in same time, only one will not be annihilated and if there are 8 apples, all apples will be annihilated. Thus, there can be no more than one apple in each inflorescence in each moment of time.

    Help Arcady with counting number of apples he will be able to collect from first inflorescence during one harvest.

    Input

    First line of input contains single integer number n (2 ≤ n ≤ 100 000)  — number of inflorescences.

    Second line of input contains sequence of n - 1 integer numbers p2, p3, ..., pn (1 ≤ pi < i), where pi is number of inflorescence into which the apple from i-th inflorescence rolls down.

    Output

    Single line of output should contain one integer number: amount of apples that Arcady will be able to collect from first inflorescence during one harvest.

    Examples
    input
    Copy
    3
    1 1
    output
    1
    input
    Copy
    5
    1 2 2 2
    output
    3
    input
    Copy
    18
    1 1 1 4 4 3 2 2 2 10 8 9 9 9 10 10 4
    output
    4
    Note

    In first example Arcady will be able to collect only one apple, initially situated in 1st inflorescence. In next second apples from 2nd and 3rd inflorescences will roll down and annihilate, and Arcady won't be able to collect them.

    In the second example Arcady will be able to collect 3 apples. First one is one initially situated in first inflorescence. In a second apple from 2nd inflorescence will roll down to 1st (Arcady will collect it) and apples from 3rd, 4th, 5th inflorescences will roll down to 2nd. Two of them will annihilate and one not annihilated will roll down from 2-nd inflorescence to 1st one in the next second and Arcady will collect it.

    题目大意:n个苹果往根上掉,第i个分支的苹果经过1s后会掉到第pi个分支,如果一个分支在某一个时刻有偶数个苹果,这些苹果全都会消失,否则保留下一个,当苹果掉到1号点就被视为捡到,问最多能捡到多少个苹果.

    分析:这题不要想复杂了......

       把这棵树给构造出来,深度为i的苹果需要跳i次才能跳到根节点,它们必然会在根节点相遇. 那么对于每一个深度,数一下有多少苹果,如果有奇数个ans++就好了.

    #include<iostream>
    #include<algorithm>
    #include<string>
    #include<queue>
    #include<cstring>
    #include<cstdio>
    
    using namespace std;
    
    const int maxn = 100010;
    int n,a[maxn],deep[maxn],head[maxn],to[maxn * 2],nextt[maxn * 2],tot = 1,ans[maxn],anss;
    
    void add(int x,int y)
    {
        to[tot] = y;
        nextt[tot] = head[x];
        head[x] = tot++;
    }
    
    void dfs(int u,int fa)
    {
        deep[u] = deep[fa] + 1;
        ans[deep[u]]++;
        for (int i = head[u];i;i = nextt[i])
        {
            int v = to[i];
            if (v == fa)
                continue;
            dfs(v,u);
        }
    }
    
    int main()
    {
        scanf("%d",&n);
        for (int i = 2; i <= n; i++)
        {
            scanf("%d",&a[i]);
            add(a[i],i);
        }
        dfs(1,0);
        for (int i = 1; i <= n; i++)
            if (ans[i] & 1)
                anss++;
        printf("%d
    ",anss);
    
        return 0;
    }
  • 相关阅读:
    CRB and His Birthday(2015多校)
    B. Bear and Three Musketeers
    Uva657
    cas服务端改造
    有用的maven插件
    maven管理的非标准目录
    struts2中的action交由spring管理
    数据库分库
    linux内核系列之二_资源
    linux内核系列之一_工具
  • 原文地址:https://www.cnblogs.com/zbtrs/p/8508826.html
Copyright © 2020-2023  润新知