Loading

2022-11-01个人周赛

A. Riverside Curio

#include <bits/stdc++.h>
using namespace std;
#define IOS ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr)
#define rep(a, b, c) for(int (a)=(b);(a)<=(c);(a)++)
#define per(a, b, c) for(int (a)=(b);(a)>=(c);(a)--)
#define mset(var, val) memset(var,val,sizeof(var))
#define ll long long
#define int ll
#define fi first
#define se second
#define no "NO\n"
#define yes "YES\n"
#define eb emplace_back
#define endl "\n"
#define pii pair<int,int>
#define pll pair<ll,ll>

const int N = 2e5 + 5;
const int inf = 0x3f3f3f3f;
const ll INF = 0x3f3f3f3f3f3f3f3f;
const int mod = 1e9 + 7;
const double eps = 1e-8;
const double pi = acos(-1.0);

int a[N],under[N];

void solve() {
    int n,ans=0;
    cin>>n;
    rep(i,1,n){
        cin>>a[i];
        under[i]=max(under[i-1],a[i]+1);
    }
    per(i,n-1,1){
        under[i]=max(under[i],under[i+1]-1);
    }
    rep(i,1,n){
        under[i]=(under[i]-a[i]-1);
        dbg(under[i]);
        ans+=under[i];
    }
    cout<<ans<<endl;
}

signed main() {
    IOS;
    int t = 1;
//    cin >> t;
    while (t--) {
        solve();
    }
    return 0;
}

F. Dr. Evil Underscores

字典树

#include <bits/stdc++.h>
using namespace std;
#define IOS ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr)
#define rep(a, b, c) for(int (a)=(b);(a)<=(c);(a)++)
#define per(a, b, c) for(int (a)=(b);(a)>=(c);(a)--)
#define mset(var, val) memset(var,val,sizeof(var))
#define ll long long
#define int ll
#define fi first
#define se second
#define no "NO\n"
#define yes "YES\n"
#define eb emplace_back
#define endl "\n"
#define pii pair<int,int>
#define pll pair<ll,ll>

const int N = 1e5 + 5;
const int inf = 0x3f3f3f3f;
const ll INF = 0x3f3f3f3f3f3f3f3f;
const int mod = 1e9 + 7;
const double eps = 1e-8;
const double pi = acos(-1.0);

int trie[N*35][2];
int cnt=1;

void insert(int x){
    int p=1;
    for(int i=30;i>=0;i--){
        int now=(x>>i)&1;
        if(!trie[p][now])   trie[p][now]=++cnt;
        p=trie[p][now];
    }
}

int search(int de,int p){
    if(de<0)    return 0;
    if(!trie[p][0]) return search(de-1,trie[p][1]);
    if(!trie[p][1]) return search(de-1,trie[p][0]);
    return (1<<de)+min(search(de-1,trie[p][1]), search(de-1,trie[p][0]));
}

void solve() {
    int n,x;
    cin>>n;
    rep(i,1,n){
        cin>>x;
        insert(x);
    }
    cout<<search(30,1)<<endl;
}

signed main() {
    IOS;
    int t = 1;
//    cin >> t;
    while (t--) {
        solve();
    }
    return 0;
}
posted @ 2022-11-06 22:10  ShG1211  阅读(34)  评论(0)    收藏  举报