C 上楼梯 中国石油大学新生训练赛#11
题目描述

明明开始有m 个体力, 求他最少要跨多少步才能上完所有台阶?
输入
对于30%的数据,m<100
对于60%的数据,m<10000
对于80%的数据,m<1000000
对于100的数据,m<10^19
输出
样例输入 Copy
3 5
样例输出 Copy
2
思路:
看表易分析规律 1, 1 + 2, 1 + 2 + 3, 1 + 2 + 3 + 4
看数据范围发现10^19 考虑写一个时间复杂度为O(1)的答案
如果n = 5, m = 5 那么是1 1 1 1 1(每次走一步,总共耗5体力)
如果m成为6,那么就是1 1 1 2
不难发现数对{1, 1} -> {2} 需要多花1点体力
同理 {1, 2} -> {3} 需要多花2点体力 可以推出所有的压缩方式 压缩对象的数值越大 多花费的体力越多
也就是说所需的代价越高,在这个思想下,不难发现,最佳答案是优先将所有1化为2 直到不能化了 再将2化为3
由于需要O(1)的答案,所以直接写数和判断就行了~
ll T1= n;
ll T2= (n - (n % 2)) * 3 / 2 + n % 2;
ll T3= (n - (n % 3)) * 2 + n % 3;
ll T4= (n - (n % 4)) * 5 / 2 + n % 4;
T2是尽力将所有走法的全部都变成2所需的体力,最后加上n % 2便是剩下的"1"
T3,T4同理,只不过状态中余的数依然是“1”,所以在代码中需要特判
例如n % 3 = 1 则最后会剩下个1 后面压缩的时候就需要优先压缩{1, 3} -> {4}
然后再压缩{3, 3, 3, 3} -> {4, 4, 4} (也就是lcm的两个因子之间的转移)
题解:
/*
************************************
***********emu^w^*********** */ #include <bits/stdc++.h>
using namespace std;
#define x first
#define y second
const int P = 13131;
#define ll long long
const int mod = 1E6 + 7;
const int INF = 0x3f, sINF = 0x3f3f3f3f;
typedef unsigned long long ULL;
typedef pair<int, int> PII;
typedef pair<long long, long long> PLL;
int dx[4] = {1, 0, -1, 0}, dy[4] = {0, 1, 0, -1};
//
const int N = 500010;
ll n, m; int main()
{
cin>>n>>m; ll T1= n;
ll temp = m;
ll T2= (n - (n % 2)) * 3 / 2 + n % 2;
ll T3= (n - (n % 3)) * 2 + n % 3;
ll T4= (n - (n % 4)) * 5 / 2 + n % 4;
// cout<<T1<<endl; cout<<T2<<endl; cout<<T3<<endl; cout<<T4<<endl; if(m >= T1 && m < T2) {
temp -= n;
cout<<n - temp<<endl;
}
else if(m >= T2 && m < T3)
{
temp -= T2;
ll ans = n / 2 + n % 2;
if(n % 2) if(temp >= 2) {
temp -= 2;
ans--;
}
if(temp >= 3) ans -= temp / 3;
cout<<ans<<endl;
}
else if(m >= T3 && m < T4) {
temp -= T3;
ll ans = n / 3 + n % 3;
if(n % 3 == 2) {
temp--;
ans--;
}
if(n % 3 == 1 && temp >= 3) {
temp -= 3;
ans--;
}
if(n % 3 == 2 && temp >= 5) {
temp -= 5;
ans--;
}
if(temp >= 6) ans -= temp / 6; cout<<ans<<endl;
}
else {
ll ans = n / 4 + n % 4;
temp -= T4;
if(n % 4 == 2 && temp >= 1) {
temp--;
ans--;
}
if(n % 4 == 3 && temp >= 1) {
temp--;
ans--;
}
if(n % 4 == 3 && temp >= 2)
{
temp -= 2;
ans--;
}
cout<<ans<<endl;
} }
时间复杂度: O(1);
类型: 条件判断
C 上楼梯 中国石油大学新生训练赛#11的更多相关文章
- I 安装饮水机 中国石油大学新生训练赛#10
问题 I: 安装饮水机 时间限制: 1 Sec 内存限制: 128 MB提交 状态 题目描述 为倡导城市低碳生活,市文明办计划举办马拉松比赛,为确保比赛安全,沿途设置了一些观察点.每个观察点派一个观 ...
- Contest1592 - 2018-2019赛季多校联合新生训练赛第二场(部分题解)
Contest1592 - 2018-2019赛季多校联合新生训练赛第二场 D 10248 修建高楼(模拟优化) H 10252 组装玩具(贪心+二分) D 传送门 题干 题目描述 C 市有一条东西走 ...
- Contest1585 - 2018-2019赛季多校联合新生训练赛第一场(部分题解)
Contest1585 - 2018-2019赛季多校联合新生训练赛第一场 C 10187 查找特定的合数 D 10188 传话游戏 H 10192 扫雷游戏 C 传送门 题干: 题目描述 自然数中除 ...
- Contest1593 - 2018-2019赛季多校联合新生训练赛第三场(部分题解)
H 10255 自然数无序拆分 H 传送门 题干: 题目描述 美羊羊给喜羊羊和沸羊羊出了一道难题,说谁能先做出来,我就奖励给他我自己做的一样礼物.沸羊羊这下可乐了,于是马上答应立刻做出来,喜羊羊见状, ...
- 10.0.0.55_12-16训练赛部分writeup
0x1 - MISC MISC100 一张帅行的照片 目测是图片隐写,但是binwalk并没有出来,应该是对文件头进行了修改 010editor查看一下,发现在jpg文件尾之后还有大量的数据 而且在灰 ...
- 给未来的你——李开复2011级大学新生演讲
2011年09月26日08:30 来源:<中国青年报> <中国青年报>的读者朋友们: 你们肩负着中华的未来,你们身上正涌动着创新的血脉! 无论你在哪所学校,哪个城市,你都是与众 ...
- 7.30 正睿暑期集训营 A班训练赛
目录 2018.7.30 正睿暑期集训营 A班训练赛 T1 A.蔡老板分果子(Hash) T2 B.蔡老板送外卖(并查集 最小生成树) T3 C.蔡老板学数学(DP NTT) 考试代码 T2 T3 2 ...
- UPC个人训练赛第十五场(AtCoder Grand Contest 031)
传送门: [1]:AtCoder [2]:UPC比赛场 [3]:UPC补题场 参考资料 [1]:https://www.cnblogs.com/QLU-ACM/p/11191644.html B.Re ...
- HDU6579 2019HDU多校训练赛第一场1002 (线性基)
HDU6579 2019HDU多校训练赛第一场1002 (线性基) 传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6579 题意: 两种操作 1.在序列末 ...
随机推荐
- 微服务从代码到k8s部署应有尽有系列(二、网关)
我们用一个系列来讲解从需求到上线.从代码到k8s部署.从日志到监控等各个方面的微服务完整实践. 整个项目使用了go-zero开发的微服务,基本包含了go-zero以及相关go-zero作者开发的一些中 ...
- 通过shell脚本进行linux服务器的CPU和内存压测
文章目录 内存压测 python的方式 shell的方式 cpu压测 在正常手段下,这个只是压测的方法 在不正常手段下(crontab计划任务),可以提高CPU和内存的使用率 什么?你问我为什么要提高 ...
- Python基础—名称空间(Day10)
一.名称空间和作用域 1.全局名称空间(名称空间.命名空间): py文件运行时代码从上之下依次执行,看到一个变量就会将这个变量与对应值的内存地址的关系存到名称空间里,代码要运行时(print时)从名称 ...
- for循环,stream,parallelStream的性能区别
for循环 for循环的性能随着数据量的增加性能也越来越差. 普通的循环不涉及较大的数据量,使用for循环更好. stream(串行流) stream在数据量小的情况下性能差,在数据量中.大的时候性能 ...
- [LeetCode]1295. 统计位数为偶数的数字
给你一个整数数组 nums,请你返回其中位数为 偶数 的数字的个数. 示例 1: 输入:nums = [12,345,2,6,7896] 输出:2 解释: 12 是 2 位数字(位数为偶数) 345 ...
- 本塔科技借力VR Engine,提供更优质的3D VR内容
本文分享于华为开发者论坛<本塔科技借力HMS Core VR Engine,提供更优质的3D VR视频内容> 本塔科技致力于为影视行业提供优质的3D VR视频内容,追求稳定.观看感舒适.良 ...
- IDEA tomcat启动报错----Artifact is being deployed, please wait...解决
今天学习遇到了这个错误,记录下自己遇到的错误和解决方法! 这个报错的意思是: Artifact 正在部署中,请稍候- 实际上有可能就是jar包没有导进去.检查项目打包情况:file-->Proj ...
- [题解]Mail.Ru Cup 2018 Round 1 - A. Elevator or Stairs?
[题目] A. Elevator or Stairs? [描述] Masha要从第x层楼去第y层楼找Egor,可以选择爬楼梯或者坐直升电梯.已知爬楼梯每层需要时间t1:坐直升电梯每层需要时间t2,直升 ...
- 实力再获认可!Smartbi入选爱分析·产业数字化厂商全景报告
近日,中国独立的第三方产业数字化研究与咨询机构--爱分析发布<2021爱分析·产业数字化厂商全景报告>.思迈特软件凭借优秀的解决方案能力及丰富的业务实践经验,入选报告中银行数字化.保险数字 ...
- 【C# .Net GC】后台垃圾回收
在后台垃圾回收 (GC) 中,在进行第 2 代回收的过程中,将会根据需要收集暂时代(第 0 代和第 1 代). 后台垃圾回收是在一个或多个专用线程上执行的,具体取决于它是后台还是服务器 GC,它只适用 ...