T3のO(1)做法

RT


先看图

看明白这张图,就明白一半了,接下来开始推柿子。

我们还知道,d=0.5gt2d是小球落下的距离。

g=10,那么d=5t2,那么d5=t2,那么d5=t

如果要接到球,上图中d的范围就是hkdh了(两条黑线)。

那么hk5d5h5,那么hk5d5h5

所以如果在x的时间能接到球,那么hk5xh5

接下来,就要算出小车在这段时间内覆盖到的长度了。

为了方便,接下来 maxt=h5,mint=hk5

这里可以看出区间为s1v×maxts1v×mint+l,下文记为beginend

但如果直接相减,你会发现连样例都过不去。

因为左右端点可能超过[0,n]的范围,即接了不存在的球。

所以begin=max(begin,0),end=min(end,n)

现在相减就可以啦~

#include <iostream>
#include <cmath>
using namespace std;
double h, s, v, l, k, n;
int main()
{
    cin >> h >> s >> v >> l >> k >> n;
    double maxt = sqrt(h / 5), mint = sqrt((h - k) / 5);
    int begin = s - v * maxt, end = s - v * mint + l;
    if(begin < 0) begin = 0;
    if(end > n) end = n;
    cout << end - begin;
    return 0;
}
posted @   Jijidawang  阅读(2)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示