首页 > 其他分享 >CF1183C Computer Game 题解

CF1183C Computer Game 题解

时间:2023-05-17 19:45:45浏览次数:52  
标签:题解 电量 long times 回合 Game Computer 电玩

Computer Game

还算水的一道题。

题意

本题意为题面直接翻译的简化版,可能会比题目翻译要复杂。

有 \(q\) 次询问,每次给出四个数,表示一开始的电亮为 \(k\),有 \(n\) 个回合,不插电玩一个回合则电量会减少 \(a\),插电玩一个回合则电量会减少 \(b\),电量在任何时刻都必须 严格大于 \(0\)。

如果能玩完 \(n\) 个回合,输出不插电玩的回合数的最大值;否则输出 \(-1\)。

思路

由于 \(k\) 最大为 \(10^9\),直接模拟肯定是不行的。

那么,这题怎样做呢?

首先,电量消耗最少的方案是每回合都插电玩,一共消耗 \(n \times b\) 的电量,只有当 \(k\) 严格大于 它时才能玩完所有回合,否则就可以输出 \(-1\)。

如果在玩某一个回合时把电拔了,那么就要多用 \(a - b\) 的电量。

要保证能玩完所有回合,可以用来自由分配的电量就只有 \(k - n \times b - 1\),知道了这个,答案也可以很快地推出来了。

可以不插电玩的回合数的公式为:\(\frac{k - n \times b - 1}{a - b}\)。

由于总共只有 \(n\) 个回合,所以答案是不能超过 \(n\) 的,正确答案公式为 \(\min(\frac{k - n \times b - 1}{a - b}, n)\)。

时间复杂度:\(O(q)\),轻松过。

要开 long long

代码

#include <bits/stdc++.h>

using namespace std;

long long q, n, k, a, b;

int main() {
  for (cin >> q; q; q--) {
    cin >> k >> n >> a >> b;
    if (k <= n * b) { // 玩都玩不完
      cout << -1;
    } else {
      cout << min(n, (k - n * b - 1) / (a - b)); // 套上公式即可
    }
    cout << '\n';
  }
  return 0;
}

标签:题解,电量,long,times,回合,Game,Computer,电玩
From: https://www.cnblogs.com/lw0-blog/p/17409914.html

相关文章

  • Plsql或Navicat连接登陆Oracle时慢、执行语句的时候也特别慢的问题解决方案
    用Plsql或Navicat连接登陆Oracle时,等待时间特别长。经过漫长的等待后,执行语句的时候也特别慢,监听配置没毛病的情况下,大概率是监听日志文件过大导致的。监听日志路径:app\Administrator\diag\tnslsnr\LS--20171012URU\listener\trace\listener.log删除listener.log文件即可。......
  • 交通运输(Wormhole Transportaion) 题解
    传送门交通运输(WormholeTransportaion)题目大意有\(n\)个点和\(m\)个点对,你需要构造一张\(m-1\)条边的无向图,使得\(m\)个点对间最短路之和最小。求最小值及取到最小值的方案数。\(2\len\le2000,2\lenm\le2\times10^7,1\leu_i,v_i\len,u_i\neqv_i\)。......
  • P3919 【模板】可持久化线段树 1(可持久化数组) 题解
    一、题目描述:维护这样的一个长度为$n$的数组,支持以下两种操作$1$:在某个历史版本上修改某一个位置上的值$2$:访问某个历史版本上的某一位置的值每进行一次操作,就会生成一个新的版本(对于操作2,生成的就是一个完全一样的版本)。版本编号即为当前操作......
  • 题解:独占访问2 Exclusive Access 2
    题目链接怎么唯一一篇题解这么抽象,完全看不懂给定一张无向图,求给这张图定向成DAG之后的最长路最短是多少。转化一下变成对DAG进行分层,每一层之间的点没有连边,使得层数尽可能少,那么最后的层数就是答案。那么就求出若干个独立集,让独立集总数尽可能少。这是经典的色数问题,我们......
  • GYM102392 简要题解
    自己下午闲着没事单挑了一下,两小时左右一度rk1,但后继无力了。。。。A.MaxorMin肯定沿着出现过的数操作;然后发现如果a[i]=k,a[j]>k,a[k]<k就会增加一次操作所以维护一下差分序列即可。B.LevelUp两维DP,这个疑似edu出过。要注意的是:需要关于x排个序,不然会漏一些转移。D.......
  • AT_dp_s 题解
    题目传送门第一道数位\(\text{dp}\),检验一下自己懂没懂。特别感谢\(\text{yinhee}\)大佬,他的讲解令我受益匪浅。题目分析\(dp_{pos,res,lim}\)为当前枚举到从高位往低位数第\(pos\)位,数字和取模后的余数为\(res\)时的方案数,其中\(lim\)可以理解为一个布尔值,\(0\)表......
  • abc260_g Scalene Triangle Area 题解
    题目传送门题意给定一个大小为\(n\timesn\)的字符矩阵,每个字符为X或者O。对于一个位于\((x,y)\)的字符o和一个格子\((u,v)\),如果满足以下条件,那么\((u,v)\)就可以被\((x,y)\)控制。\(x\leqslantu\leqslantn\),\(y\leqslantv\leqslantn\)。\((u-x)+\fr......
  • 前端传递参数与后端接收的类属性不一致问题解决办法
    使用@JsonAlias作用是在反序列化的时候可以让Bean的属性接收多个json字段的名称。可以加在字段上或者getter和setter方法上。publicclassUser{ @JsonAlias({"name","user"}) privateStringusername; privateStringpassword; privateIntegerage;}这样子......
  • JOISC 2018 题解
    没做计算几何题和提交答案题。JOISC2018Day1ConstructionofHighway道路建设注意到题目中的操作相当于就是到根的路径染色,我们离线下来进行树剖,每条重链维护连续段,然后显然均摊会修改\(O(n\logn)\)段。我们每次修改时可以取出所有连续段,然后题目问逆序对数,我们对这些连续......
  • ORA-02049:超时:分布式事务处理等待锁 问题解决
    数据库添加DBLink后,很容易出现一个问题:ORA-02049:超时:分布式事务处理等待锁ORA-02063:紧接着line(起自ODS_LINK) 问题原因分析:第一次执行操作后出错,数据库没有提交或回退,未关闭原有数据库窗口,重新打开新窗口执行数据插入操作,报ORA-02049错误。解决办法:数据库登陆管理员账号查看1、......