萌新求调简单题过了样例但是 UKE 都快哭了
查看原帖
萌新求调简单题过了样例但是 UKE 都快哭了
1013955
1234567890sjx楼主2024/9/23 22:05
// #pragma GCC optimize(3)
#include<bits/stdc++.h>
#define pb push_back
#define eb emplace_back
#define int long long
#define F(i,x,y) for(int i=x;i<=y;++i)
#define G(i,x,y) for(int i=x;i>=y;--i)
#define FD(i,x,y) for(int i=x;i*i<=y;++i)
#define GD(i,x,y) for(int i=x;i*i>=y;--i)
#define adde(x,y) z[x].eb(y);
#define Adde(x,y) z[x].eb(y),z[y].eb(x);
#define addew(x,y,w) z[x].eb(y,w)
#define Addew(x,y,w) z[x].eb(y,w),z[y].eb(x,w)
#define FIMX(X) memset(X,0x3f,sizeof X)
#define FIMI(X) memset(X,-0x3f,sizeof X)
#define FI0(X) memset(X,0,sizeof X)
#define FIN(X) memset(X,-1,sizeof X)
#define rng(X) X.begin(),X.end()
#define PII pair<int,int>
#define PDD pair<double,double>
#define PIII tuple<int,int,int>
#define VI vector<int>
#define VII vector<PII>
#define VID vector<pair<int,double>>
#define VDD vector<PDD>
using namespace std;
const int N=2000010;
int f[N][22];
struct qwq{int l,r;}z[N];
//f[i][j] 表示从 i 开始跳,跳 2^j 步之后下一个位置在哪里
void solve(unsigned __testid=1){
    int n,k;
    while(cin>>n>>k){
        F(i,1,k){
            cin>>z[i].l>>z[i].r;
            if(z[i].l>z[i].r)z[i].r+=n;
        }
        sort(z+1,z+k+1,[&](auto l,auto r){
            return l.l<r.l||l.l==r.l&&l.r>r.r;
        });
        int p=1,mx=0;
        F(i,1,2*n){
            while(p<=k&&z[p].l<=i)mx=max(mx,z[p++].r+1);
            f[i][0]=mx;
        }
        F(j,1,21)
            F(i,1,2*n)
                f[i][j]=f[f[i][j-1]][j-1];
        int mi=1e18;
        F(i,1,2*n){
            int cnt=0,now=i;
            G(j,21,0)
                if(n+i>f[now][j])
                    cnt+=(1ll<<j),now=f[now][j];
            now=f[now][0],++cnt;
            if(i+n<=now)mi=min(mi,cnt);
        }
        if(mi>=1e17)
            cout<<"impossible\n";
        else
            cout<<mi<<'\n';
    }
}
int32_t main(){
    // ios_base::sync_with_stdio(0) ;
    // cin.tie(nullptr);
    int T;
    T=1;
    // cin>>T;
    F(_,1,T)
        solve(_);
    return 0;
}
2024/9/23 22:05
加载中...