文章
2
粉丝
0
获赞
3
访问
154
为什么WA?只有80分,递归建树后BFS
#include<bits/stdc++.h>
#define ll long long
#define endl "\n"
#define mod 998244353
const int N = 1e6+5;
using namespace std;
int n;
int a[N];
int p[N];
int h[N][2];
map<int,int> mp,nmp;
int fun(int l,int r,int ql,int qr)//中序 先序
{
//cout<<"*"<<l<<" "<<r<<" "<<ql<<" "<<qr<<endl;
if(l==r)
{
return a[ql];
}
int root=a[ql];
int cnt0 = 0;
if((root-1 - l +1)>0)cnt0 = (root-1 - l +1);
int cnt1 = 0;
if(r- (root+1) + 1 >0)cnt1 = (r- (root+1) + 1);
if(cnt0)
{
int a= fun(l,root-1,ql+1,ql+cnt0);
h[root][0] = a;
}
if(cnt1)
{
int b= fun(root+1,r,qr+1-cnt1,qr);
h[root][1] = b;
}
return root;
}
bool vis[N];
void sol()
{
/**/
cin>>n;
for(int i=1;i<=n;i++)
{
h[i][0]=h[i][1]=-1;
}
for(int i=1;i<=n;i++)
{
cin>>a[i];
p[i]=a[i];
}
int idx=0;
//离散化
sort(p+1,p+n+1);
for(int i=1;i<=n;i...
登录后发布评论
感谢反馈,check之后发现有一组数据确实存在重复tree[i],应该是23年当时提供题目数据的同学疏忽了~实力比较强就没重复验