CE求条
查看原帖
CE求条
1044851
99999873654as7829楼主2024/8/23 18:33
#include<bits/stdc++.h>
#define int long long
#define endl "\n"
typedef signed sh;
int mod1=1e9+7,mod2=998244353;
using namespace std;
using namespace std::__detail;
inline int read(){
    int x=0,f=1;char ch=getchar();
    while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}
    while (ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}
    return x*f;
}
//深度优先搜索
void dfs(int k){
    if(/*条件*/1){
        /*输出*/
        return;
    }
    else{
        /*递归*/
        dfs(k+1);
    }
}
//快速幂
int qp(int a, int b, int p)
{
    if (b == 0)
        return 1;
    if (b % 2 == 0)
        return qp(a * a % p, b / 2, p);
    return qp(a * a % p, b / 2, p) * a % p;
}
//翻转字符串
string fz(string a){
    string b="";
    for(int i=a.size()-1;i>=0;i--){
        b+=a[i];
    }
    return b;
}
struct jiqi{
    int a,b;
}a[112345];
int n,p,l=1,r;
bool notzero(jiqi a[]){
    for(int i=1;i<=n;i++){
        if(a[i].b<=0) return 0;
    }
    return 1;
}
bool cmp(jiqi x,jiqi y){
    return x.b<y.b;
}
bool check(int mid,jiqi b){
    int sec=0;
    while(notzero(b)){
        sec++;
        sort(b+1,b+n+1,cmp);
        b[1].b-=b[1].a-p;
        for(int i=2;i<=n;i++){
            b[i].b-=b[i].a;
        }
    }
    return sec>=mid;
}
signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    cin>>n>>p;
    int cnt=0;
    for(int i=1;i<=n;i++){
        cin>>a[i].a>>a[i].b;
        r=max(r,a[i].b);
        if(a[i].a<=p)cnt++;
    }
    if(cnt==n){
        cout<<-1;
        return 0;
    }
    int ans=-1;
    while(l<=r){
        int mid=(l+r)/2;
        if(check(mid)){
            l=mid+1;
            ans=mid;
        }
        else r=mid-1;
    }
    cout<<ans;
    return 0;
}

rt(无题面,只改CE QWQ)

2024/8/23 18:33
加载中...