做汉堡
来源:互联网 发布:太原网页搜索优化 编辑:程序博客网 时间:2024/04/27 17:36
QAQ
思路很简单,就是二分能做的个数
如果钱够就增大做的个数
不够就减少
主要是右边界的判断
保证钱<=1e12
然后保证价钱>=1,原本的材料<=100
最极端的情况也就是可以做1e12+100个汉堡啦
要注意好多变量要搞成long long
#include <cstdio>#include <cstring>#include <iostream>using namespace std;int b,s,c;int nb,ns,nc;int pb,pc;int ps;long long mon;char ss[102];int check(long long mid){ long long xm=0; long long xb=b*mid; long long xs=s*mid; long long xc=c*mid; if(xb>nb) xm+=(xb-nb)*pb; if(xs>ns) xm+=(xs-ns)*ps; if(xc>nc) xm+=(xc-nc)*pc; if(xm>mon) return 0; return 1;}int main(){ scanf("%s",ss); for(int i=0;i<strlen(ss);i++) { if(ss[i]=='B') b++; if(ss[i]=='S') s++; if(ss[i]=='C') c++; } cin>>nb>>ns>>nc>>pb>>ps>>pc; cin>>mon; long long l=0;long long r=1e14; while(l<=r) { long long mid=(l+r)/2; if(check(mid)) l=mid+1; else r=mid-1; } cout<<r; return 0;}
方法二:贪心
我们先处理出原本手中的材料可以做出汉堡的个数
然后那种材料不够就用钱买哪种材料
当都不够时
就直接用钱除就行啦
#include <cstdio>#include <cstring>#include <iostream>using namespace std;int b,s,c;int nb,ns,nc;int pb,pc;int ps;long long mon;char ss[102];long long ans=0;int main(){ scanf("%s",ss); for(int i=0;i<strlen(ss);i++) { if(ss[i]=='B') b++; if(ss[i]=='S') s++; if(ss[i]=='C') c++; } cin>>nb>>ns>>nc>>pb>>ps>>pc; cin>>mon; while(nb>=b&&nc>=c&&ns>=s) { ans++; nb-=b; nc-=c; ns-=s; } if(!b) nb=0; if(!s) ns=0; if(!c) nc=0; int flag=0; while(nb>0||nc>0||ns>0) { int k=max(b-nb,0)*pb+max(s-ns,0)*ps+max(c-nc,0)*pc; if(mon>=k) { mon-=k; ans++; nb-=b; nc-=c; ns-=s; nb=max(nb,0); nc=max(nc,0); ns=max(ns,0); } else { flag=1; break; } } if(!flag) { int k=s*ps+b*pb+c*pc; ans+=mon/k; } cout<<ans; return 0;}
阅读全文
1 0
- 做汉堡
- 汉堡
- 今天晚上自己做汉堡吃........那个爽啊...
- 人件读书笔记(02)干酪汉堡,做一个,卖一个
- 打码的程序员和做汉堡的有什么区别!
- 快餐业的噩梦?机器人一个小时可做150个汉堡 | 深度
- 汉堡菜单
- 今天的汉堡
- 今天的汉堡
- 今天的汉堡
- 今天的汉堡
- 今天的汉堡
- 今天的汉堡
- 今天的汉堡
- 今天的汉堡
- 今天的汉堡
- 今天的汉堡
- uva557 - Burger(汉堡)
- 销售订单过账装箱单方法调用流程[AX2012]
- 【Netty4.X】Netty源码分析之NioEventLoop(六)
- [绍棠] avplayer
- Centos6.8下安装LNMP
- 分布式服务下Quartz任务框架配置
- 做汉堡
- CodeM资格赛1
- interface接口和abstract抽象类的区别和联系
- C# 反射调用私有 静态 方法
- [译]The Python Tutorial#6. Modules
- 深入浅出 RPC
- 【OpenCV3图像处理】绘图功能总结(直线,矩形,圆,椭圆,多边形,文字)
- 从尾到头打印链表(五种方法包括链表翻转、递归、栈、容器逆序)
- Redis集群主从复制,读写分离(下)