zoukankan      html  css  js  c++  java
  • 洛谷P3926 SAC E#1

    P3926 SAC E#1 - 一道不可做题 Jelly

    【链接】:https://www.luogu.org/problem/show?pid=3926

    题目背景

    SOL君(炉石主播)和SOL菌(完美信息教室讲师)是好朋友。

    题目描述

    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。

    输出格式:

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

    输入输出样例

    输入样例#1:
    -10 0 2 1 3 26
    
    输出样例#1:
    1
    输入样例#2:
    -10 0 2 1 3 27
    输出样例#2:
    2

    说明

    对于 30\%30% 的数据,|a|, |c| leq 200, x leq 100a,c200,x100。

    对于 60\%60% 的数据,|a|, |c| leq 2 imes 10^9, x leq 100a,c2×109​​,x100。

    对于 100\%100% 的数据,|a|, |c| leq 2 imes 10^9, 1 leq x, p, q, r leq 10^9a,c2×109​​,1x,p,q,r109​​。

    数据中可能有 a = ca=c,此时算还未解冻的状态。

    提示:请使用long long数据类型。

    【分析】:注意点是特判x》p。

    如果a>c,ans=a+[x/r];

    如果a==c有两种情况:

    x<=q ,ans=c;

    x>q, ans=c+[(x-q)/r];

    如果a<c有三种情况:

    x<=(c-a)p ,ans=a+[x/p];

    (c-a)p<=x<=(c-a)p+q,ans=c;

    x>(c-a)p+q,ans=c+[(x-(c-a)p-q)/r];

    【时间复杂度】:O(1)

    【代码】:

    #include <cstdio>
    #include <algorithm>
    using namespace std;
    #define LL long long
    int main()
    {
        LL a,c,p,q,r,x;
        scanf("%lld%lld%lld%lld%lld%lld",&a,&c,&p,&q,&r,&x);
        int ans;
        int t=0;
        while(a<c&&x>=p)//注意判断x》p!!!
        {
            x-=p;
            a++;
        }
        //printf("time=%d c=%d
    ",t,a);
        if(a==c)
            x-=q;
        //printf("time=%d c=%d
    ",t,a);
        while(x>=r)
        {
            x-=r;
            a++;
        }
        //printf("time=%d c=%d
    ",t,a);
        printf("%lld
    ",a);
        return 0;
    }
    View Code
    #include <iostream>
    
    using namespace std;
    
    #define LL long long
    
    int main() {
        LL a,c,p,q,r,x,t;
        cin >> a >> c >> p >> q >> r >> x;
        
        if(a<c) {
            t = min(x, p*(c-a));
            x -= t;
            a += t / p;
        }
        
        if(a==c) {
            x -= min(x, q);
        }
        
        a += x / r;
        cout << a << endl;
    }
    标程
  • 相关阅读:
    【USACO18JAN】MooTube G
    【JSOI2008】星球大战
    【ECF#87】小结
    【NOIP2013】火柴排队
    【USACO04OPEN】MooFest G
    【NOI OL #2】T3 游戏
    【NOI OL #2】T2 子序列问题
    简单NLT
    python中的位运算
    列表和元组
  • 原文地址:https://www.cnblogs.com/Roni-i/p/7634835.html
Copyright © 2011-2022 走看看