CodeForces 625A 思维
2016-02-20 22:23
357 查看
题意是说一个人喝酒 有两种办法 买塑料瓶的 a块钱 喝了就没了 或者是买玻璃瓶的b块钱 喝完还能卖了瓶子c块钱 求最多能喝多少瓶
在开始判断一次 a与b-c的关系 即两种方式喝酒的成本
如果a<=b-c 那么直接全部买塑料瓶就行了 没必要买玻璃瓶 因为麻烦 而且会出现钱不够b却够b-c这种情况 很麻烦
如果a>b-c 也就是说买玻璃瓶更省一些 就应当先买玻璃瓶的 不行了再尝试塑料瓶
第一种情况只做一次除法就够了
第二种情况 如果用while循环(n>b)来做 会超时在test48...醉倒在梨花风凉的夜晚..
在这里有一个技巧 当n>b时 先让n-=b 这时候留的钱可以进行无限次循环喝酒成本 即tot=(n-b)/(b-c)+1 加的一是一开始减去的b的次数 然后再求之后能不能喝塑料瓶
英语好伤..读题耗费了好久...
在开始判断一次 a与b-c的关系 即两种方式喝酒的成本
如果a<=b-c 那么直接全部买塑料瓶就行了 没必要买玻璃瓶 因为麻烦 而且会出现钱不够b却够b-c这种情况 很麻烦
如果a>b-c 也就是说买玻璃瓶更省一些 就应当先买玻璃瓶的 不行了再尝试塑料瓶
第一种情况只做一次除法就够了
第二种情况 如果用while循环(n>b)来做 会超时在test48...醉倒在梨花风凉的夜晚..
在这里有一个技巧 当n>b时 先让n-=b 这时候留的钱可以进行无限次循环喝酒成本 即tot=(n-b)/(b-c)+1 加的一是一开始减去的b的次数 然后再求之后能不能喝塑料瓶
英语好伤..读题耗费了好久...
#include<stdio.h> #include<string.h> #include<algorithm> #include<map> #include<math.h> using namespace std; long long int a,b,c; long long int n; int xiao; int main(){ while(~scanf("%lld",&n)) { scanf("%lld%lld%lld",&a,&b,&c); long long int ans=0; if(a<=(b-c)) { while(n>=a) { long long int tot=n/a; ans+=tot; n-=tot*a; } printf("%lld\n",ans); } else if(a>(b-c)) { long long int yu=b-c; if(n>=b) { ans+=(n-b)/ yu+1; } n-=ans*yu; while(n>=a) { long long int tot=n/a; ans+=tot; n-=tot*a; } printf("%lld\n",ans); } } }
相关文章推荐
- pwm实验纯文字总结
- Codeforces Group Projects dp
- new和delete、malloc和free之间的异同点以及用法实例
- 11-题目1431:Sort
- HDU 1069 Monkey and Banana(dp)
- 推荐算法综述
- 完整的微信登陆 接收消息流程
- 我的RTOS 之七 -- 调度器
- 在业务系统中调用水晶报表提示:ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小
- [Python入门]Chapter2 变量、表达式和语句
- 自定义用户注册生日键盘(封装)2
- mysql忘记root密码
- Hadoop中传递list/Map/对象型参数的传递
- libffi浅析
- OpenJudge百炼习题解答(C++)--题2000:金币
- java自定义注解学习
- HDU 4730 We Love MOE Girls (2013成都网络赛,签到水题)
- 格子刷油漆
- typeof知多少
- 随机验证码