思维题-cf900-补题

文章讨论了在有限电量情况下,如何选择开机(a方案)持续发送消息还是关机(b方案)节省时间,通过C++代码实现了一个判断程序,以确定在给定实例中是否能在关机前发送所有消息。
摘要由CSDN通过智能技术生成

(翻译存在误差)

输入  (t个实例)

n(消息数),f(总电量),a(开机时每时刻消耗电量),b(每次开关机消耗电量)

(n个数据:每条消息发送的时刻)

输出

关机之前可以发送全部消息—yes

否则—no

 主要是考虑每两条消息中间的时间段 是a方案(一直开机)耗电少 还是 b方案(关机再开机)时间少

需要根据最后的提示注意溢出问题。

根据所给实例分析可知开关机方案不需要考虑那一时刻的耗电。

//正确答案
#include<bits/stdc++.h>
using namespace std;
long long a[200010];
int main()
{
    int t;
    cin >> t;
    while(t --)
    {
        int m = 0;
        int flag = 1;
        long long n, sum, x, y;//n, f, a, b
        cin >> n >> sum >> x >> y;
        for(int i = 1; i <= n; i ++)
            cin >> a[i];
        a[0] = 0;
        for(int i = 0; i < n; i ++)
        {
            long long sum1 = (a[i+1]-a[i])*x;
            long long sum2 = y;
            sum -= min(sum1, sum2);

            if(sum <= 0)
            {
                printf("NO\n");
                flag = 0;
                break;
            }
        }
        if(flag) printf("YES\n");
    }
    return 0;
}

  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值