80分求助
  • 板块B3629 吃冰棍
  • 楼主八爷
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/8/13 10:21
  • 上次更新2023/11/3 04:08:59
查看原帖
80分求助
834518
八爷楼主2023/8/13 10:21

#4 #7 TLE 我的代码:

#include <bits/stdc++.h>
using namespace std;
int n;
int calc(int x) {
    int total = x;
    while(x >= 3) {
        total++; 
        x -= 2;
    }
    return total;
}
int main() {
    int l, r, mid, ans;
    scanf("%d", &n);
    l = 1; r = n;
    ans = r;
    while(l <= r) {
        mid = (l + r) / 2;
        if(calc(mid) >= n) { // 如果买 mid 个冰棍,实际上可以吃到不少于 n 个冰棍
            ans = mid; // 记录答案
            r = mid - 1; // 限定在左半边
        } else
            l = mid + 1; // 限定在右半边
    }
    printf("%d\n", ans);
    return 0;
}

求解

2023/8/13 10:21
加载中...