THUPC 初赛拧螺丝怎么做
  • 板块学术版
  • 楼主IYSY2009I
  • 当前回复3
  • 已保存回复3
  • 发布时间2023/3/5 16:15
  • 上次更新2023/10/23 22:57:38
查看原帖
THUPC 初赛拧螺丝怎么做
449457
IYSY2009I楼主2023/3/5 16:15

RT,看起来很简单的一个题,但是 WA 掉了,大佬帮忙看一看这个思路对不对

#include<iostream>
#include<cstdio>
using namespace std;
int n,k;
bool check(int x){
    int m1=0,m2=k,zeng=0,sum=0;
    for(int i=x;i>=1;i--){
        sum+=k/i;
        m1+=k%(m1+m2);
        m2-=k%(m1+m2);
        if(m2<=0){
            zeng++;
            m1-=k;
            m2=k-m1;
        }
        if(m1) m1--;
        else m2--;
    }
    if(sum+zeng>=n||sum+zeng>=n-1&&m1) return true;
    return false;
}
int main(){
    scanf("%d%d",&n,&k);
    int ans=0;
    if(!check(k)){
        printf("Poor E.S.!");
        return 0;
    }
    int l=1,r=k;
    while(l<r-1){
        int mid=(l+r)>>1;
        if(check(mid)) r=mid;
        else l=mid-1;
    }
    if(check(l)) printf("%d",l);
    else printf("%d",r);
    return 0;
}

8cdx

2023/3/5 16:15
加载中...