AT_abc180_d 题解
本篇题解为此题较简单做法及较少码量,并且码风优良,请放心阅读。
题目简述
现有 \(STR\) 和 \(EXP\) 两个变量,初始化分别为 \(X\) 和 \(0\),可对变量 \(STR\) 做以下两种操作:
将 \(STR\) 乘 \(A\),并将 \(EXP\) 自加 \(1\)。
将 \(STR\) 加上 \(B\),并将 \(EXP\) 自加 \(1\)。
在 \(STR < Y\) 的情况下,求 \(EXP\) 的最大值。
思路
本蒟蒻读完题目后:“贪心!”
那么贪心该怎么贪?通过题意我们很容易想到,无论是执行第一个造作还是第二个操作对 \(EXP\) 的影响不变,故就需要我们衡量操作一或二的优势。
如执行操作一比执行操作二更优,则有:
\]
同时需满足:
\]
而自信提交的我结果就可想而知了,重新看了一遍题目,发现数据范围:\(1 \le X < Y \le 10^{18}\),\(2 \le A \le 10\),\(1 \le B \le 10^9\)。
那么 \(STR \times A\) 就有爆 \(\text{long long}\) 的可能,通过简单的不等式移项可变化为:
\]
这样操作一比操作二更优的情况就解决了。又因为贪心思想,当操作二更优时可直接计算还可加多少 \(B\),直接加到 \(ans\) 里即可,因为此时再进行操作一必定超过 \(Y\) 或 \(STR \times A \ge STR + B\)。
经过以上分析,即可得到以下代码:
#include<iostream>
using namespace std;
long long x, y, a, b, ans = 0; // 开 long long
int main() {
cin >> x >> y >> a >> b; // 输入
while(x < y) {
if(x < y / a && x * a < x + b) x *= a, ans ++; // 操作一比操作二更优,防止爆 long long 优化
else break; // 操作二更优
}
ans += (y - x - 1) / b; // 计算操作二还可执行多少次
cout << ans << endl; // 输出,换行好习惯
return 0;
}
\(\text{The End!!!}\)
提交了 \(5\) 次,我崩溃了 qwq。。
AT_abc180_d 题解的更多相关文章
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
- 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解
题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...
- 2016ACM青岛区域赛题解
A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- poj1399 hoj1037 Direct Visibility 题解 (宽搜)
http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...
- 网络流n题 题解
学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...
- CF100965C题解..
求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...
- JSOI2016R3 瞎BB题解
题意请看absi大爷的blog http://absi2011.is-programmer.com/posts/200920.html http://absi2011.is-programmer.co ...
随机推荐
- nc反弹中 &>、0>&1是什么意思
1.简介 本文结合一些参考文章以及作者个人理解解释Linux的bash反弹命令中的 &>.0>&1 观点有误,欢迎指出! 目标讨论命令:bash -i >& ...
- C#中位枚举(Flags)
在日常的开发工作当中,位枚举可能会被经常使用,如星期多选.租期多选等等,我们可以将多选字段做或运算,然后保存到数据库表的字段中,如 1 | 2 = 3(0001 | 0010 = 0011 = 3). ...
- .net版OCR紧随PP-OCRv3重磅发布
.net版OCR地址PaddleOCRSharp PaddleOCRSharp是一个基于PaddleOCR的C++代码修改并封装的.NET的工具类库.包含文本识别.文本检测.基于文本检测结果的统计分析 ...
- windows报错
如果说你dns没有权威的话1.先去long.com上面右键属性把"区域传送给所有服务器打勾"2.右键属性,在名称分析器中,输入要添加为辅助dns的服务器的ip显示解析成功就可以了
- pandas基础--汇总和计算描述统计
pandas含有是数据分析工作变得更快更简单的高级数据结构和操作工具,是基于numpy构建的. 本章节的代码引入pandas约定为:import pandas as pd,另外import numpy ...
- c# Redis缓存的使用和helper类;
使用背景: 项目中用户频繁访问数据库会导致程序的卡顿,甚至堵塞.使用缓存可以有效的降低用户访问数据库的频次,有效的减少并发的压力.保护后端真实的服务器. 对于开发人员需要方便调用,所以本文提供了hel ...
- c# IdHelper生成唯一的雪花Id
为什么使用雪花ID 在以前的项目中,最常见的两种主键类型是自增Id和UUID,在比较这两种ID之前首先要搞明白一个问题,就是为什么主键有序比无序查询效率要快,因为自增Id和UUID之间最大的不同点就在 ...
- OOP第一阶段题集总结
一.前言 知识点:数组,字符串的使用,链表,hashmap,泛型的使用,正则表达式的使用,类的设计,类与类之间的关系,单一职责. 题量:题目数量为5+4+3,数量适中,其中都是前几题较简单,最后一题较 ...
- C#窗体内控件大小随窗体等比例变化
一.首先定义全局变量 1 private float X;//当前窗体的宽度 2 private float Y;//当前窗体的高度 3 private bool IsFirst = true; 二. ...
- win10系统(专业版)实现双网卡链路聚合
win10系统(专业版)实现双网卡链路聚合 参考: https://learn.microsoft.com/zh-cn/powershell/module/netswitchteam/new-nets ...