题解:CF718A Efim and Strange Grade
CF718A Efim and Strange Grade 题解
算法
贪心+模拟
思路分析
显然,要最优每一次进位就只能五入不能四舍。而且当我们五入时,要取位数最高的。比如说 \(1.3535\),我们有两种进位方式,一种是进位成 \(1.4\),一种是进位成 \(1.354\),显然前者更优。
那这道题给的次数有啥用呢?
考虑一种“连环进位”。举个例子,\(2.4445\) 最终结果应该是 \(2.5\),进位三次。那我们的代码就很好设计了,先找到位数最高的大于五的数位,然后再向前找连续的 \(4\),连续的个数就是我们达到最优的次数,判断一下和所给的 \(t\) 的大小关系即可。
注意进位时 \(9\) 的再次进位,以及整数位进位会超 long long 等细节问题。
代码
代码仅供参考
#include <bits/stdc++.h>
using namespace std;
namespace Raiden
{
int a = -1, b;
signed work()
{
string s, s1;
int n, t;
cin >> n >> t;
cin >> s;
int st = s.find(".");
for (int i = st + 1; i < s.size(); i++)
{
if (s[i] - '0' >= 5)
{
a = i;
break;
}
}
for (int i = a - 1; i >= st; i--)
{
if (s[i] - '0' == 4)
b++;
else
break;
}
if (a == -1)
cout << s << endl;
else if (a == st + 1)
{
string s1 = s.substr(0, st);
for (int i = st-1; i >= 0; i--)
{
if (s1[i] != '9')
{
s1[i]++;
break;
}
else
s1[i] = '0';
}
if (s1[0] == '0')
cout << 1 << s1 << endl;
else
cout << s1 << endl;
}
else if (t >= b + 1)
{
if (a - b == st + 1)
{
string s1 = s.substr(0, st);
for (int i = st-1; i >= 0; i--)
{
if (s1[i] != '9')
{
s1[i]++;
break;
}
else
s1[i] = '0';
}
if (s1[0] == '0')
cout << 1 << s1 << endl;
else
cout << s1 << endl;
}
else
{
if (s[a - b - 1] == '9')
cout << s.substr(0, a - b - 2) << char(s[a - b - 2] + 1) << '0' << endl;
else
cout << s.substr(0, a - b - 1) << char(s[a - b - 1] + 1) << endl;
}
}
else
{
if (s[a - t] == '9')
cout << s.substr(0, a - t - 1) << char(s[a - t - 1] + 1) << '0' << endl;
else
cout << s.substr(0, a - t) << char(s[a - t] + 1) << endl;
}
return 0;
}
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
return Raiden::work();
}
题解:CF718A Efim and Strange Grade的更多相关文章
- Codeforces Round #373 (Div. 2) C. Efim and Strange Grade 水题
C. Efim and Strange Grade 题目连接: http://codeforces.com/contest/719/problem/C Description Efim just re ...
- codeforces 719C. Efim and Strange Grade
C. Efim and Strange Grade time limit per test 1 second memory limit per test 256 megabytes input sta ...
- Codeforces Round #373 (Div. 2) C. Efim and Strange Grade —— 贪心 + 字符串处理
题目链接:http://codeforces.com/problemset/problem/719/C C. Efim and Strange Grade time limit per test 1 ...
- CF719C. Efim and Strange Grade[DP]
C. Efim and Strange Grade time limit per test 1 second memory limit per test 256 megabytes input sta ...
- Efim and Strange Grade
Efim and Strange Grade time limit per test 1 second memory limit per test 256 megabytes input standa ...
- codeforces 373 A - Efim and Strange Grade(算数模拟)
codeforces 373 A - Efim and Strange Grade(算数模拟) 原题:Efim and Strange Grade 题意:给出一个n位的实型数,你可以选择t次在任意位进 ...
- Codeforces 718A Efim and Strange Grade 程序分析
Codeforces 718A Efim and Strange Grade 程序分析 jerry的程序 using namespace std; typedef long long ll; stri ...
- 【22.17%】【codeforces718B】 Efim and Strange Grade
time limit per test 1 second memory limit per test 256 megabytes input standard input output standar ...
- CodeForces 718A Efim and Strange Grade (贪心)
题意:给定一个浮点数,让你在时间 t 内,变成一个最大的数,操作只有把某个小数位进行四舍五入,每秒可进行一次. 析:贪心策略就是从小数点开始找第一个大于等于5的,然后进行四舍五入,完成后再看看是不是还 ...
- 题解合集 (update on 11.5)
收录已发布的题解 按发布时间排序. 部分可能与我的其他文章有重复捏 qwq . AtCoder for Chinese: Link ZHOJ: Link 洛谷 \(1\sim 5\) : [题解]CF ...
随机推荐
- JavaScript设计模式样例十六 —— 备忘录模式
备忘录模式(Memento Pattern) 定义:保存一个对象的某个状态,以便在适当的时候恢复对象.目的:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态.场景:数据缓存. ...
- 【测试平台开发】——01Vue前端框架实操
一.VScode官网地址 https://code.visualstudio.com/ 但是官网下载贼慢,需要修改下国内地址: 原地址:https://az764295.vo.msecnd.net/s ...
- Python新手爬虫二:爬取搜狗图片(动态)
经过上一期爬取豆瓣影评成功后,感觉爬虫还不错,于是想爬点图片来玩玩... 搜狗图片地址:https://pic.sogou.com/?from=category 先上最后成功的源码(在D盘下创建sou ...
- JDK有用的新特性-Switch
目录 箭头表达式,新的 case 标签 yeild 返回值 Java Record Switch 的三个方面,参考: JEP 361 支持箭头表达式 支持 yied 返回值 支持 Java Recor ...
- 2024-09-04:用go语言,给定一个长度为n的数组 happiness,表示每个孩子的幸福值,以及一个正整数k,我们需要从这n个孩子中选出k个孩子。 在筛选过程中,每轮选择一个孩子时,所有尚未选
2024-09-04:用go语言,给定一个长度为n的数组 happiness,表示每个孩子的幸福值,以及一个正整数k,我们需要从这n个孩子中选出k个孩子. 在筛选过程中,每轮选择一个孩子时,所有尚未选 ...
- 神经网络之卷积篇:详解卷积神经网络示例(Convolutional neural network example)
详解卷积神经网络示例 假设,有一张大小为32×32×3的输入图片,这是一张RGB模式的图片,想做手写体数字识别.32×32×3的RGB图片中含有某个数字,比如7,想识别它是从0-9这10个数字中的哪一 ...
- C#/.NET/.NET Core技术前沿周刊 | 第 4 期(2024年9.1-9.8)
前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录.追踪C#/.NET/.NET Core领域.生态的每周最新.最实用.最有价值的技术文章.社区动态.优质项目和学习资源等. ...
- 使用js闭包实现可取消的axios请求
在平常开发中,经常会遇到重复请求的情况,也许是因为网络问题,也许是因为接口问题等等,传统做法是客户端采用防抖来限制用户发送接口的频率,一般出个loading转圈圈的形式, 但是很少使用取消请求的做法, ...
- 英文短语和单词备忘 - as well as
English phrases and vocabulary notes: as well as "as well as" 是一个连接词组,通常用于连接两个相似的元素,以强调两者都 ...
- RxJS 系列 – Transformation Operators
前言 前几篇介绍过了 Creation Operators Filter Operators Join Creation Operators Error Handling Operators 这篇继续 ...