Educational Codeforces Round 80 (Rated for Div. 2) A. Deadline

Adilbek有一个特殊项目,需要在n天内完成,但程序需运行d天。通过x天优化,可使程序运行时间减为⌈dx+1⌉天。问题是他能否在n天内完成优化并提供结果。输入包含测试用例的数量和n,d的值,输出YES或NO表示是否能在期限内完成。" 137311141,14586329,微信小程序实时聊天与即时通讯实现详解,"['微信小程序', 'WebSocket', '即时通讯', '客户端开发']

A. Deadline
time limit per test2 seconds
memory limit per test256 megabytes
inputstandard input
outputstandard output

Adilbek was assigned to a special project. For Adilbek it means that he has n days to run a special program and provide its results. But there is a problem: the program needs to run for d days to calculate the results.

Fortunately, Adilbek can optimize the program. If he spends x (x is a non-negative integer) days optimizing the program, he will make the program run in ⌈dx+1⌉ days (⌈a⌉ is the ceiling function: ⌈2.4⌉=3, ⌈2⌉=2). The program cannot be run and optimized simultaneously, so the total number of days he will spend is equal to x+⌈dx+1⌉.

Will Adilbek be able to provide the generated results in no more than n days?

Input
The first line contains a single integer T (1≤T≤50) — the number of test cases.

The next T lines contain test cases – one per line. Each line contains two integers n and d (1≤n≤109, 1≤d≤109) — the number of days before the deadline and the number of days the program runs.

Output
Print T answers — one per test case. For each test case print YES (case insensitive) if Adilbek can fit in n days or NO (case insensitive) otherwise.

Example
inputCopy

3
1 1
4 5
5 11
outputCopy
YES
YES
NO
Note
In the first test case, Adilbek decides not to optimize the program at all, since d≤n.

In the second test case, Adilbek can spend 1 day optimizing the program and it will run ⌈52⌉=3 days. In total, he will spend 4 days and will fit in the limit.

In the third test case, it’s impossible to fit in the limit. For example, if Adilbek will optimize the program 2 days, it’ll still work ⌈112+1⌉=4 days.

#include<iostream>
#include<cmath>
using namespace std;
typedef long long ll;
int main() {
    ll t,n,d;
    cin>>t;
    while(t--) {
        cin>>n>>d;
        ll x=sqrt(d);
        if(x+ceil((1.0)*d/(x+1))<=n)
            cout<<"YES"<<endl;
        else {
            x=sqrt(d)-1;
            if(x+ceil((1.0)*d/(x+1))<=n)
                cout<<"YES"<<endl;
            else
                cout<<"NO"<<endl;
        }
    }
    return 0;
}


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值