洛谷题解:P3926 SAC E#1 - 一道不可做题 Jelly

洛谷题解:P3926 SAC E#1 - 一道不可做题 Jelly

题目:

SOL君很喜欢吃蒟蒻果冻。而SOL菌也很喜欢蒟蒻果冻。

有一天,他们在一起搓炉石,而SOL菌则要拿出蒟蒻果冻招待他的客人。

蒟蒻果冻一般在a度下保存在冰箱里。但是刚拿出来的时候太冰了,需要加热。SOL菌打算用一种神奇的电炉加热蒟蒻果冻。根据观察,它有一个特点:

1、蒟蒻果冻小于c度的时候,每p单位时间加热1单位温度;

2、当蒟蒻果冻等于c度的时候,需要q单位时间解冻(大家都知道,晶体物态变化温度不变……SOL君认为果冻属于晶体);

3、当蒟蒻果冻解冻完成之后,每r单位时间加热1单位温度。

SOL想知道,将果冻加热x单位时间的时候果冻的温度。

温度向下取整,也就是说,如果加热结束时不足p(或q)单位时间,则认为在这最后一小段时间内果冻温度没有任何变化

输入:

输入仅包含一行,6个整数,依次为a,c,p,q,r,x。

输出:

输出仅包含一个整数:即为所求温度。

样例:

输入:

-10 0 2 1 3 26

输出:

1

输入:

-10 0 2 1 3 27

输出:

2

分析:

该题解释的很清楚,虽然分支很多但是理解好题意,每一个分支理解透彻,模拟的难度不大。

分好三种情况后,对于a < c的情况还要再细分情况,但是注意a == c的时候温度是不会增长的,当时没有考虑周到浪费了很长时间。

代码:

代码有点冗长,但是并不会TLE。

#include<iostream>
#include<string>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<vector>

using namespace std;

int main()
{
    
    
    long long a,c,p,q,r,x;
    long long ans;

    cin>>a>>c>>p>>q>>r>>x;
    if(a > c)
    {
    
    
        ans = a + x/r;
    }
    else if(a == c)
    {
    
    
        if(q > x)
        {
    
    
            ans = a;
            cout<<ans<<endl;
            return 0;
        }
        else
        {
    
    
            ans = a + (x - q)/r;
        }
    }
    else
    {
    
    
        if(x < p)
        {
    
    
            ans = a;
        }
        else
        {
    
    
            ans = a;
            bool judge = false;
            while (true)
            {
    
    
                if(ans < c)
                {
    
    
                    if(x >= p)
                    {
    
    
                        x = x - p;
                        ans++;
                    }
                    else
                    {
    
    
                        break;
                    }
                }
                else if(ans == c && !judge)
                {
    
    
                    if (x >= q)
                    {
    
    
                        x = x - q;
                        judge = true;
                    }
                    else
                    {
    
    
                        break;
                    }
                }
                else
                {
    
    
                    if(x >= r)
                    {
    
    
                        x = x - r;
                        ans++;
                    }
                    else
                    {
    
    
                        break;
                    }
                }
            }
        }
    }
    cout<<ans<<endl;
    return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_46052886/article/details/113407084