首页 > 其他分享 >1

1

时间:2024-03-26 21:13:30浏览次数:21  
标签: pre nxt int pos hi id

#include<bits/stdc++.h>
using namespace std;
#define int long long
struct iid{
    int pre,nxt,id,hi;
}j[100018];
bool cmp(idd a,idd b){
    return a.hi < b.hi;
}
int n,t;
int pos[100005],ga[100005],gb[100005];
int f[25][100005][2];
int da[25][100005][2],db[25][100005][2];
int la,lb;
int choice(int a,int b,int cnt){
    if(!a){
        return j[b].id;
    }
    if(!b){
        return j[a].id;
    }
    if(j[cnt].hi - j[a].hi <= j[b].hi - j[cnt].hi){
        return j[a].id;
    }
    else{
        return j[b].id;
    }
}
void del(int pos){
    if(j[pos].nxt){
        j[j[pos].nxt].pre = j[pos].pre;
    }
    if(j[pos].pre){
        j[j[pos].pre].nxt = j[pos].nxt;
    }
}
void work(int s,int x){
    la = lb = 0;
    int k = 0;
    for(int i = t;i >= 0;i --){
        if(f[i][s][k] && da[i][s][k] + db[i][s][k] <= x){
            x -= (da[i][s][k] + db[i][s][k]);
            la += da[i][s][k];
            lb += db[i][s][k];
            if(!i){
                k ^= 1;
            }
            s = f[i][s][k];
        }
    }
}
signed main(){
    cin >> n;
    for(int i = 1;i <= n;i ++){
        cin >> j[i].hi;
        j[i].id = i;
    }
    sort(j + 1,j + n + 1,cmp);
    for(int i = 1;i <= n;i ++){
        j[i].pre = i - 1;
        j[i].nxt = i + 1;
        pos[j[i].id] = i;
    }
    j[1].pre = j[n].nxt = 0;
    for(int i = 1;i < n;i ++){
        int p = pos[i];
        int p1 = j[i].pre;
        int p2 = j[i].nxt;
        if(p1 && (j[p].hi - j[p1].hi <= j[p2].hi - j[p].hi || !p2)){
            gb[i] = j[p1].id;
            ga[i] =
        }
    }
    
    return 0;
}

标签:,pre,nxt,int,pos,hi,id
From: https://www.cnblogs.com/Liuooo/p/18097574

相关文章