mirror of
https://gitcode.com/Zengtudor/alg2025.git
synced 2025-12-16 12:13:03 +00:00
refactor(P7988.cpp): 简化代码结构并优化算法实现
移除未使用的头文件和变量,重构主要逻辑为更简洁的树构建算法。使用set代替deque来维护数据结构,提高查找效率。
This commit is contained in:
parent
cb4242a69d
commit
6752cfbb74
@ -1,32 +1,13 @@
|
|||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
#include <cstdio>
|
|
||||||
#include <deque>
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <istream>
|
#include <istream>
|
||||||
|
#include <iterator>
|
||||||
#include <set>
|
#include <set>
|
||||||
#include <utility>
|
|
||||||
using ll = int64_t;
|
using ll = int64_t;
|
||||||
|
|
||||||
#define sl static inline
|
const ll maxn = 2e5+5;
|
||||||
|
ll n,a[maxn],idx[maxn],ls[maxn],rs[maxn];
|
||||||
const ll maxn = 2e5+5,inf=1e9;
|
std::set<ll> s;
|
||||||
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()){
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int main(){
|
int main(){
|
||||||
std::iostream::sync_with_stdio(false);
|
std::iostream::sync_with_stdio(false);
|
||||||
@ -35,14 +16,24 @@ int main(){
|
|||||||
std::cin>>n;
|
std::cin>>n;
|
||||||
for(ll i=1;i<=n;i++){
|
for(ll i=1;i<=n;i++){
|
||||||
std::cin>>a[i];
|
std::cin>>a[i];
|
||||||
nidx[a[i]]=i;
|
idx[a[i]]=i;
|
||||||
uused.emplace(a[i]);
|
|
||||||
}
|
}
|
||||||
uused.erase(a[1]);
|
s.insert(a[1]);
|
||||||
dfs(N, 1, 0, -inf, inf);
|
for(ll i=2;i<=n;i++){
|
||||||
for(ll i=0;i<=n;i++){
|
auto p = s.upper_bound(a[i]);
|
||||||
std::cout<<ans[i]<<"\n";
|
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