【CF#468 div2 D. 】Peculiar apple-tree(思维)

题干:

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

3
1 1

Output

1

Input

5
1 2 2 2

Output

3

Input

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各节点则输入n-1个数,因为默认1号节点在深度为0),输入的顺序即是树的节点的标号顺序,输入的值代表这个节点的父亲节点是的序号,结果子之后,苹果会向下落、序列1的位置在最下面。只有落到序列1位置的苹果可以摘,苹果下落时有两种规则

1、两个苹果相撞就会消失

2、苹果下一次出现的位置为当前花序对应的pi值

 

问 一个能摘到多少个苹果

解题报告:

     这个题的关键是分析出,最后摘到苹果的数量就是每一层的果子的奇偶数,而与  和上一层的节点的连接关系无关。  即假设:第二层有两个节点,第三层有三个节点,那么,第三层的节点无论怎么与第二层的连接,你会发现最终落到第一层的结果都是一样的(因为这一层的在某一个时间内同时落下,与第二层本身有几个果子,第四层本身有多少果子都没有关系,所以相当于认为这棵树上只有第三层有果子,来分析到第一层的情况)。

AC代码:(直接维护每一层的果子数)

#include<bits/stdc++.h>using namespace std;
int sum[100000 + 5];
int dep[100000 + 5];
int root;
int ans;
int main()
{int n;int maxx = 0;cin>>n;dep[1]=1;sum[1] = 1;for(int i = 2; i<=n; i++) {scanf("%d",&root);dep[i] =dep[root] + 1;maxx = max(maxx,dep[i] );sum[dep[i] ] +=1; }
//	printf("maxx = %d\n",maxx);for(int i = 1; i<=maxx; i++) {ans +=sum[i]%2;}cout<<ans<<endl;return 0 ;
}

AC代码:(可以用搜索树从下到上跑一边,其本质是一样的都是要统计每一层果子数)

#include <bits/stdc++.h>
#define MOD 10000
#define INF 0x3f3f3f3f
#define bug cout << "bug" << endlusing namespace std;
typedef long long ll;const int MAX_N=1e5+5;
int n,m;
vector <int> edge[MAX_N];
int cnt[MAX_N],depth[MAX_N];void dfs1(int v,int dep){depth[v]=dep;for(int i=0;i<(int)edge[v].size();i++){dfs1(edge[v][i],dep+1);}return ;
}
int main(void){int n,par;cin >> n;for(int i=2;i<=n;++i){scanf("%d",&par);edge[par].push_back(i);}int ans=0;dfs1(1,0);for(int i=1;i<=n;i++)   cnt[depth[i]]++;for(int i=0;i<=n;i++){if(cnt[i]&1)   ans++;}cout << ans << endl;
}

总结:思维题还是要先分析一下情况在动笔,说不定题目很简单,但是想复杂了 !可以找几个样例找找规律。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/442043.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

case when then else多个条件_sqlserver条件分支case when使用教程

在sqlserver的条件分支case when有两种写法&#xff1a;1)case 字段 when 值 then 返回值 when 值2 then 返回值2 end2)case when 条件1 then 返回值1 when 条件2 then 返回值2 end方法步骤&#xff1a;1.打开“SQL Server Management Studio”管理工具&#xff0c;创建一张测试…

【CF#-931A】 Friends Meeting(思维)

题干&#xff1a; Two friends are on the coordinate axis Ox in points with integer coordinates. One of them is in the point x1  a, another one is in the point x2  b. Each of the friends can move by one along the line in any direction unlimited number …

hashmap value占用空间大小_【Java集合框架002】原理层面:HashMap全解析

一、前言二、HashMap2.1 HashMap数据结构 HashMap线程不安全 哈希冲突2.1.1 HashMap数据结构学习的时候&#xff0c;先整体后细节&#xff0c;HashMap整体结构是 底层数组链表 &#xff0c;先记住&#xff0c;再开始看下面的HashMap相关知识点&#xff1a;底层数据结构&#…

【CF#931.B】World Cup (思维,模拟)

题干&#xff1a; The last stage of Football World Cup is played using the play-off system. There are n teams left in this stage, they are enumerated from 1 to n. Several rounds are held, in each round the remaining teams are sorted in the order of their …

升级bios_华硕B350PLUS升级BIOS更换AMD 3900X步骤

首先CPU更换看下面这张图&#xff0c;注意CPU上的小三角的位置。这块主板如果BIOS没有升级直接更换AMD 3900X的CPU会有点不亮显示器的问题&#xff0c;所以下面讲下华硕B350PLUS这块主板是如何更新到最新的BIOS驱动的(需要在原来老的CPU基础上先升级&#xff0c;升级完再更换39…

【HDU - 3410 】 Passing the Message(单调栈)

题干&#xff1a; What a sunny day! Let’s go picnic and have barbecue! Today, all kids in “Sun Flower” kindergarten are prepared to have an excursion. Before kicking off, teacher Liu tells them to stand in a row. Teacher Liu has an important message to …

实体类 接口_spring-boot-route(五)整合Swagger生成接口文档

目前&#xff0c;大多数公司都采用了前后端分离的开发模式&#xff0c;为了解决前后端人员的沟通问题&#xff0c;后端人员在开发接口的时候会选择使用swagger2来生成对应的接口文档&#xff0c;swagger2提供了强大的页面调试功能&#xff0c;这样可以有效解决前后端人员沟通难…

【qduoj - 312】寻找唯一的萌妹(卡时)

题干&#xff1a; 寻找唯一的萌妹 Description 又到了一年一度ACMer暑期留校集训的日子了&#xff0c;目前一共有2n1个小萌新报名参加暑期集训&#xff0c;其中2n个是帅哥&#xff0c;只有1个萌妹子&#xff0c;这是多么的悲催&#xff01;由于暑期训练强度大&#xff0c;坚持…

python 遍历字典嵌套_Python 字典嵌套循环遍历

这是从接口获取到的json数据{* "code":"10000",* "charge":false,* "remain":0,* "msg":"查询成功",* "result":{* "status":0,* "msg":"ok",* "result":{* &…

ACMer的AC福音!手动扩栈外挂!(防止栈溢出)

还在因为 怕 g 提交时间很慢&#xff0c;但是用C 交又怕栈溢出&#xff1f;&#xff1f;&#xff1f; 我们都知道&#xff0c;如果代码里有 递归函数 频繁调用&#xff0c; 用 C 提交代码&#xff0c; 很可能就会 出现 Runtime Error (ACCESS_VIOLATION) 但是用G…

【HDU - 1452】 Happy 2004(因子和,逆元,快速幂)

题干&#xff1a; Happy 2004 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 1863 Accepted Submission(s): 1361 Problem Description Consider a positive integer X,and let S be the sum of all pos…

bootstrap-table 新增可编辑行_现代Web开发堆栈工具DevExtreme 新增Gantt组件,助力项目管理...

点击“了解更多”获取DevExpress DevExtreme v19.2正式版下载DevExtreme拥有高性能的HTML5 / JavaScript小部件集合&#xff0c;使您可以利用现代Web开发堆栈(包括React&#xff0c;Angular&#xff0c;ASP.NET Core&#xff0c;jQuery&#xff0c;Knockout等)构建交互式的Web应…

关抢占 自旋锁_互斥锁、自旋锁、读写锁、悲观锁、乐观锁的应用场景

前言生活中用到的锁&#xff0c;用途都比较简单粗暴&#xff0c;上锁基本是为了防止外人进来、电动车被偷等等。但生活中也不是没有 BUG 的&#xff0c;比如加锁的电动车在「广西 - 窃格瓦拉」面前&#xff0c;锁就是形同虚设&#xff0c;只要他愿意&#xff0c;他就可以轻轻松…

【HDU - 1852】 Beijing 2008()

题干&#xff1a; Beijing 2008 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/65535 K (Java/Others) Total Submission(s): 917 Accepted Submission(s): 394 Problem Description As we all know, the next Olympic Games will be held in Beiji…

dvwa详解_DVWA(六):XSSReflected 反射型XSS全等级详解

XSS 概念&#xff1a;由于web应用程序对用户的输入过滤不严&#xff0c;通过html注入篡改网页&#xff0c;插入恶意脚本&#xff0c;从而在用户浏览网页时&#xff0c;控制用户浏览器的一种攻击。XSS类型&#xff1a;Reflected(反射型)&#xff1a;只是简单的把用户输入的数据反…

直线的端点画垂线的lisp_【以课说法】线段、射线、直线

课例概况课例点晴你的课堂是碎片化的知识教学&#xff0c;还是结构化的问题探究&#xff1f;如何把碎片化的知识教学变成结构化的问题探究&#xff1f;实施路径就是问题串&#xff0c;用问题串统整知识点&#xff1b;围绕问题串&#xff0c;从问题引发、问题探究&#xff0c;直…

*【CF#633B】 A Trivial Problem(二分或枚举)

题干&#xff1a; Mr. Santa asks all the great programmers of the world to solve a trivial problem. He gives them an integer m and asks for the number of positive integers n, such that the factorial of n ends with exactly m zeroes. Are you among those grea…

wordpress拒绝访问_Nginx + Wordpress页面或帖子URL返回拒绝访问

谢谢你的答案 r3wt。但是&#xff0c;我猜上面的配置文件是不合适的我不想保持原样(但是对于我来说开发似乎没问题&#xff0c;因为部署我宁愿为每个站点使用单独的配置文件)。所以&#xff0c;别名部分和我的问题应该正确定义try_files因为我想要捕获链接以localhost / szpetr…

【HDU - 2104】hide handkerchief (素数)

题干&#xff1a; The Children’s Day has passed for some days .Has you remembered something happened at your childhood? I remembered I often played a game called hide handkerchief with my friends. Now I introduce the game to you. Suppose there are N peo…

python高级编程装饰器_Python装饰器

def my_decorator(function):def _my_decorator(*args, **kw):#在调用实际函数之前做些填充工作res function(*args, **kw)#做完某些填充工作之后return res#返回子函数return _my_decorator当装饰器需要参数时&#xff0c;必须使用第二级封装。def my_decorator(arg1, arg2):…