1 条题解

  • 0
    @ 2026-5-19 0:20:13

    题目传送门

    解析

    题目大意

    00 米开始走,每一秒可以选择提升或下降原速度 11 米每秒或者不变速,且满足速度不会小于零。现在要求跑到 KK 米的时候速度不应超过 XX 米每秒,问给出 NNXX,走完全程的最小时间。

    考查知识

    本题考查模拟。

    解析

    对于每一种情况,我们可以定几个定量分别存储总时间、升速距离和减速距离,判断总距离是否达到目标(注意:如果跑的总距离不小心超过了目标 KK 也是可以的,见样例解释),如果不达标则继续跑,跑的时候注意会不会超过速度限制 XX,超过了就得要减速。

    代码

    #include<bits/stdc++.h>
    using namespace std;
    int k=0,n=0,x;
    int main() 
    {
        cin>>k>>n;
        while(n--) 
    	{
            cin>>x;
            int output=0,speedup=0,speeddown=0,v=0;
    	    while(1)
    		{
    	        v++;
    	        speedup+=v;//上升距离累计
    	        output++;
    	        if(speedup+speeddown>=k)//检查累计距离是否达到目标
    			{
    				cout<<output<<endl;
    				break;
    			}
    	        if(v>=x)//检查是否达到最大速度限制
    			{
    	            speeddown+=v;//下降距离累计
    	            output++;
    	            if(speedup+speeddown>=k)//再次检查累计距离
    	            {
    	            	cout<<output<<endl;
    	            	break;
    				}
    	        }
    	    }
        }
    }
    
    • 1

    信息

    ID
    6902
    时间
    1000ms
    内存
    256MiB
    难度
    6
    标签
    递交数
    24
    已通过
    10
    上传者