~~代码不明显有问题,你本机是怎么AC的~~
为什么要选这样的标题。。
by hehe_54321 @ 2018-04-22 12:30:29
原来你的逻辑是过了样例就是A了啊,自己看看数据范围,~~再不懂就别做了吧+=~~
还有,rp真心可有可无
by BlueArc @ 2018-04-22 13:02:36
@[jxdql2001](/space/show?uid=27114) 数据范围哪里有问题啊
倒是发现根节点选错了,改了之后全WA
```cpp
#define filreader
#include <bits/stdc++.h>
#define fp(i,l,r) for(register int i=(l);i<=(r);++i)
#define fd(i,l,r) for(register int i=(l);i>=(r);--i)
#define MAXN 300000+20
using namespace std;
const int INF=0x3f;
typedef struct node{
int LeftChild;
int RightChild;
int deep;
int data;
};
static struct node Tree[MAXN];
static int deepmaxn;
static int n,r;
inline int make(int wat,int now){
if(Tree[wat].data<Tree[now].data){
if(Tree[now].LeftChild!=-1){
make(wat,Tree[now].LeftChild);
}
else{
Tree[now].LeftChild=wat;
Tree[wat].deep=Tree[now].deep+1;
if(Tree[wat].deep>=deepmaxn){
deepmaxn=Tree[wat].deep;
}
return 0;
}
}
else if(Tree[wat].data>Tree[now].data){
if(Tree[now].RightChild!=-1){
make(wat,Tree[now].RightChild);
}
else{
Tree[now].RightChild=wat;
Tree[wat].deep=Tree[now].deep+1;
if(Tree[wat].deep>=deepmaxn){
deepmaxn=Tree[wat].deep;
}
return 0;
}
}
else{
return 0;
}
return 0;
}
inline int init(){
int a;
deepmaxn=-INF;
scanf("%d",&n);
fp(i,1,n){
scanf("%d",&a);
if(i==1){
r=a;
Tree[1].deep=1;
Tree[1].data=a;
continue;
}
Tree[i].data=a;
make(i,1);
}
printf("deep=%d\n",deepmaxn);
return 0;
}
inline int laru(int curr){
if(Tree[curr].LeftChild!=-1){
laru(Tree[curr].LeftChild);
}
if(Tree[curr].RightChild!=-1){
laru(Tree[curr].RightChild);
}
printf("%d\n",Tree[curr].data);
return 0;
}
int main(){
#ifdef filreader
freopen("data.txt","r",stdin);
freopen("ans.txt","w",stdout);
#endif
memset(Tree,-1,sizeof(Tree));
init();
laru(1);
return 0;
}
```
by Fraction @ 2018-04-22 13:34:16
最后吐槽一句。。puts("deep=5\n2\n3\n7\n35\n10\n9\n4\n1"),
他给的样例输入我本机输出答案是对的啊。。。为什么交上来WA了呢。。
by Rye_Catcher @ 2018-04-22 14:08:10
@[Rye_Catcher](/space/show?uid=61382) -_-
by Fraction @ 2018-04-22 14:14:39
这题要开到1e7
by OasisLiam @ 2021-10-05 17:22:55