SSL2832 2017年11月3日提高组T1 生日宴会(二分)
2017-11-03 21:01
483 查看
2017年11月3日提高组T1 生日宴会
DescriptionAlice在餐馆里当服务员,今天是她生日,她请求厨师帮她准备生日晚餐,晚餐由N种原料做成,每道菜所需每种原料的数量是一样的。
厨房里有一些原料,但不够,Alice还需要从旁边的超市中购买一些回来。超市里什么原料都有,每种原料都分大包装和小包装。Alice有M元钱,她想利用这M元钱购买原料使得能做出最多的菜。
Input
第一行包含两个整数N和M(1<=N<=100,1<=M<=100000),接下来N行,每行包含6个正整数,用来描述这种原料的信息,具体如下:
(1) X:10<=X<=100,表示一道菜中必须含有这种原料的数量;
(2) Y:1<=Y<=100,表示这种原料厨房已有的数量;
(3) Sm:1<=Sm<=100,表示超市里小包装中含有这种原料数量;
(4) Pm:10<=Pm<=100,表示小包装的价格;
(5) Sv:1<=Sv<=100,表示超市里大包装中含有这种原料数量;
(6) Pv:10<=Pv<=100,表示大包装的价格。
Output
输出最多能做多少道菜。
Sample Input
2 100
10 8 10 10 13 11
12 20 6 10 17 24
Sample Output
5
分析:二分一个答案就知道了每种原料所需数量,然后枚举买小包装的数量就知道买大包装的数量,判断是否可行。
代码
#include <cstdio> #define N 200 using namespace std; int x ,y ,a [3],b [3]; int n,m; int min(int x,int y) { return x<y?x:y; } bool check(int p) { int ans=0; for (int i=1;i<=n;i++) { int mon=123456789; int need=x[i]*p-y[i]; for (int j=0;j<=need/a[i][1]+1;j++) { int w=need; int tmp=0; w-=a[i][1]*j; tmp+=a[i][2]*j; if (w<=0) { mon=min(mon,tmp); continue; } int k=w/b[i][1]; if (w%b[i][1]>0) k++; tmp+=b[i][2]*k; mon=min(mon,tmp); } ans+=mon; } return ans<=m; } int main() { freopen("b.in","r",stdin); freopen("b.out","w",stdout); scanf("%d%d",&n,&m); for (int i=1;i<=n;i++) scanf("%d%d%d%d%d%d",&x[i],&y[i],&a[i][1],&a[i][2],&b[i][1],&b[i][2]); int l=0,r=m; while (l<r) { int mid=(l+r)/2; if (check(mid)) l=mid+1; else r=mid; } if (!check(l)) l--; printf("%d",l); fclose(stdin); fclose(stdout); }
相关文章推荐
- 2017年11月3日提高组T2 生日宴会
- SSL2777 2017年10月21日提高组 偷懒的西西(二分+dp)
- 生日宴会Light1008(二分)
- SSL2672 2017年8月8日提高组T3 题目(二分+spfa)
- SSL2705 2017年8月17日提高组T1 游戏(math+二分)
- SSL2831 2017年11月3日提高组T1 跃动(dp)
- SSL2833 2017年11月3日提高组T1 Alice的疑问(数位dp)
- SSL2834 2017年11月4日提高组T2 背包(二分)
- 【NOIP提高组2015D2T1】uva 714 copying books【二分答案】——yhx
- 2017年11月1日提高组 第k小数(二分+分块)
- 【NOIP2012提高组】 借教室 前缀和+二分
- SSL2560 2016年提高组模拟试题 连锁店(贪心)
- 2016年提高组模拟题(20161114) 锦标赛 ssl 2571 差分约束系统
- SSL2675 2017年8月9日提高组T3 难题(dfs)
- SSL2731 2017年9月16日提高组T2 学校联网(kruskal)
- SSL2764 2017年10月8日提高组T1 didi(dp)
- SSL2837 2017年11月6日提高组T1 互质(math)
- SSL2668 2017年8月7日提高组T1 根(dfs)
- 【jzoj5247】【NOIP2017提高A组模拟8.10】【计算几何】【二分答案】