mirror of
https://gitcode.com/Zengtudor/alg2025.git
synced 2025-10-17 21:42:25 +00:00
refactor(P7988.cpp): 简化代码结构并优化算法实现
移除未使用的头文件和变量,重构主要逻辑为更简洁的树构建算法。使用set代替deque来维护数据结构,提高查找效率。
This commit is contained in:
parent
cb4242a69d
commit
6752cfbb74
@ -1,32 +1,13 @@
|
||||
#include <cstdint>
|
||||
#include <cstdio>
|
||||
#include <deque>
|
||||
#include <iostream>
|
||||
#include <istream>
|
||||
#include <iterator>
|
||||
#include <set>
|
||||
#include <utility>
|
||||
using ll = int64_t;
|
||||
|
||||
#define sl static inline
|
||||
|
||||
const ll maxn = 2e5+5,inf=1e9;
|
||||
ll n, a[maxn],ans[maxn],nidx[maxn];
|
||||
std::deque<ll> sfl,sfg;
|
||||
std::set<ll> uused;
|
||||
|
||||
enum HL{
|
||||
HI,LO,N
|
||||
};
|
||||
sl void dfs(HL f, ll idx, ll nans, ll max, ll min){
|
||||
//大了
|
||||
ll nmax = a[idx];
|
||||
uused.erase(a[idx]);
|
||||
if(uused.empty()){
|
||||
ans[a[idx]-1]=nans;
|
||||
}else if(auto p = uused.lower_bound(min); p==uused.end()){
|
||||
|
||||
}
|
||||
}
|
||||
const ll maxn = 2e5+5;
|
||||
ll n,a[maxn],idx[maxn],ls[maxn],rs[maxn];
|
||||
std::set<ll> s;
|
||||
|
||||
int main(){
|
||||
std::iostream::sync_with_stdio(false);
|
||||
@ -35,14 +16,24 @@ int main(){
|
||||
std::cin>>n;
|
||||
for(ll i=1;i<=n;i++){
|
||||
std::cin>>a[i];
|
||||
nidx[a[i]]=i;
|
||||
uused.emplace(a[i]);
|
||||
idx[a[i]]=i;
|
||||
}
|
||||
uused.erase(a[1]);
|
||||
dfs(N, 1, 0, -inf, inf);
|
||||
for(ll i=0;i<=n;i++){
|
||||
std::cout<<ans[i]<<"\n";
|
||||
s.insert(a[1]);
|
||||
for(ll i=2;i<=n;i++){
|
||||
auto p = s.upper_bound(a[i]);
|
||||
ll u = 0;
|
||||
if(p!=s.end()){
|
||||
u=*p;
|
||||
}
|
||||
if(p!=s.begin() && (!u || idx[u]<idx[*std::prev(p)])){
|
||||
u=*std::prev(p);
|
||||
}
|
||||
if(a[i]>u){ //比父亲大
|
||||
rs[u]=a[i];
|
||||
}else{
|
||||
ls[u]=a[i];
|
||||
}
|
||||
s.insert(a[i]);
|
||||
}
|
||||
}
|
||||
|
||||
//TODO
|
||||
//TODO
|
||||
}
|
Loading…
Reference in New Issue
Block a user