CF 702D Road to Post Office
来源:互联网 发布:阿里星球windows 编辑:程序博客网 时间:2024/05/22 17:41
Description
这道题目是讲想在A想去一个城市,这个城市距离A所处的地方距离为d。A有一辆车,但这辆车每开k的距离就会熄火,熄火后A要用t的时间去维修。值得注意的是,这辆车一开始时维修好的。A的车每开1的距离需要的时间为a。另外,A也可以选择在任何一个地方下车,然后徒步走向终点,这徒步走1的距离为b(b>a)。问A到这个城市的最小时间为多少。
Data Constraint
d,k<=1012 ,a,b,t<=106
Solution
我们发现A的最优选择显然是在开完一段路之后直接弃车徒步……然后我们会发现:对于一段长度为k的距离,A除弃车以外所用的时间实为t+a*k,而徒步的时间为b *k。假设我们发现(b*k>t+a *k),那么一开始就没必要开车。然后我们考虑最后一段路(d Mod k)这段路有没有必要修车之后开车走,还是徒步走完。简单判断一下就好。特别的,如果(k>=d),那么直接开车走完,连修车都不用就好了。
代码
#include<iostream>#include<cmath>#include<cstring>#include<cstdio>#include<algorithm>#define ll long longusing namespace std;ll d,k,a,b,t,i,j,l,x,y,p;ll pan(ll x,ll y){ if (x%y) return x/y;return x/y-1;}int main(){ scanf("%lld%lld%lld%lld%lld",&d,&k,&a,&b,&t); if (d>k){ if (a*k+t>=b*k) p=a*k+(d-k)*b; else { x=pan(d,k); p=a*k*x+t*(x-1); y=d-k*x; p+=min(y*b,t+y*a); } }else p=a*d; printf("%lld\n",p);}
3 0
- CF 702D Road to Post Office
- codeforces-702D-Road to Post Office
- Codeforces 702D - Road to Post Office
- Codeforces Problem 702D Road to Post Office(分类讨论)
- Codeforces 702D Road to Post Office(模拟 + 公式推导)
- Educational Codeforces Round 15 D. Road to Post Office
- CodeForces-702D Road to Post Office(初中数学脑洞题)
- Codeforces 702D Road to Post Office【捎带数学的思维题】
- Educational Codeforces Round 15 D. Road to Post Office (数学)
- Educational Codeforces Round 15 D Road to Post Office(分类讨论)
- CodeForces702D. Road to Post Office(二分or数学)
- CF 27D Ring Road 2
- coderforces 702DRoad to Post Office
- CF-27D. Ring Road 2(涂色)
- The road to a science Ph.D.
- CF Round #424( Div.2) D. Office Keys
- cf 758 D Ability To Convert (dp)
- End of the "Road to DataStage Certification" D
- java基础
- java中的数组
- C++ 纯虚函数 pure virtual function && ABC
- SharedPtr
- linux文件查找命令 find
- CF 702D Road to Post Office
- PHP的数据类型,变量和常量
- URL重定向之一.htaccess文件和AllowOverride指令了解
- 多线程规避死锁方法
- Android 上传头像(文件)到服务器
- 分布式开放消息系统(RocketMQ)的原理与实践
- NYOJ:845无主之地
- Oracle -- DBA
- 常见算法及问题场景——线性规划