Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
27830 22级廖思学 【S】T1最大后缀值个数 C++ 运行出错 0 2 MS 80 KB 1087 2024-03-31 09:53:10

Tests(0/10):


#include<bits/stdc++.h> using namespace std; #define int long long int a[1000010]; struct node{ long long num,ct,s[110]; }t[1000010]; int cnt; int dfs(int pos,int k){ if(pos==k){ cnt++; return t[pos].num; } if(t[pos].ct==0)return 1e18; int mmax=t[pos].num; bool flag=false; for(int i=1;i<=t[pos].ct;i++){ int ans=dfs(t[pos].s[i],k); if(!flag)mmax=max(mmax,ans); if(ans!=1e18){ flag=true;mmax=max(ans,t[pos].num); if(t[pos].num==mmax)cnt++; } cout<<ans<<" "<<mmax<<" "<<cnt<<endl; } return mmax; } signed main(){ int n;cin>>n; bool flag=false; for(int i=2;i<=n;i++){ int k;cin>>k; if(k!=i-1)flag=true; t[k].s[++t[k].ct]=i; } if(!flag){ for(int i=1;i<=n;i++){ cin>>a[i]; } for(int i=1;i<=n;i++){ int mmax=0,cnt=0; for(int j=i;j>=1;j--){ mmax=max(mmax,a[j]); if(a[j]==mmax)cnt++; } cout<<cnt<<" "; } return 0; } for(int i=1;i<=n;i++){ cin>>t[i].num; } for(int i=1;i<=n;i++){ cnt=0; dfs(1,i); cout<<cnt<<" "; } return 0; }


测评信息: