题目链接:点击这里

题目大意:
有 xxx 个红球, yyy 个蓝球,一组物品由 aaa 个红球 bbb 个蓝球 或者 aaa 个蓝球 bbb 个红球组成,求这 xxx 个红球和 yyy 个蓝球最多能凑成多少组物品

题目分析:
设第一种组合和第二种组合的数目分别为 m,nm,nm,n ,题目转换为求 m+nm+nm+n 的最大值,其中 m,nm,nm,n 受如下了两个不等式限制:
a∗m+b∗n≤xa*m+b*n \le xa∗m+b∗n≤x
a∗n+b∗m≤ya*n+b*m \le ya∗n+b∗m≤y
m+nm+nm+n 显然具有单调性,所以可以考虑二分,接下来问题转化为如何 checkcheckcheck :
设 cnt=m+ncnt=m+ncnt=m+n ,第一组有 kkk 中,此情况下有如下限制:
a∗k+b∗(cnt−k)≤xa*k+b*(cnt-k)\le xa∗k+b∗(cnt−k)≤x 即 k≤x−b∗cnta−bk\le \frac {x-b*cnt}{a-b}k≤a−bx−b∗cnt​
a∗(cnt−k)+b∗k≤ya*(cnt-k)+b*k\le ya∗(cnt−k)+b∗k≤y 即 k≥y−a∗cntb−ak\ge \frac{y-a*cnt}{b-a}k≥b−ay−a∗cnt​
0≤k≤cnt0\le k\le cnt0≤k≤cnt
a>ba> ba>b (保证不等号方向)
如果不等式有交集,那么就有解,交集为空就是无解
注意判断不等号满足时是上取整还是下取整

具体细节见代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<vector>
#include<set>
#include<map>
#define ll long long
#define inf 0x3f3f3f3f
#define int ll
using namespace std;
inline int read()
{int res = 0,flag = 1;char ch = getchar();while(ch<'0' || ch>'9'){if(ch == '-') flag = -1;ch = getchar();}while(ch>='0' && ch<='9'){res = (res<<3)+(res<<1)+(ch^48);//res*10+ch-'0';ch = getchar();}return res*flag;
}
const int maxn = 2e3+5;
const int mod = 1e9+7;
const double pi = acos(-1);
const double eps = 1e-8;
int x,y,a,b;
bool check(int cnt)
{if(a == b) return cnt <= min(x/a,y/b);int l = ceil(1.0*(y-a*cnt)/(b-a));int r = floor(1.0*(x-b*cnt)/(a-b));l = max(0ll,l),r = min(r,cnt);return l <= r;
}
signed main()
{int t = read();while(t--){x = read(),y = read(),a = read(),b = read();if(a < b) swap(a,b);int l = 0,r = max(x/a,y/b),ans = -1;while(l <= r){int mid = l+r>>1;if(check(mid)) l = mid+1,ans = mid;else r = mid-1;}printf("%d\n",ans);}return 0;
}

CodeForces - 1538G Gift Set (二分)相关推荐

  1. CodeForces - 1538G Gift Set(二分)

    题目链接:点击查看 题目大意:给出 a,b,x,ya,b,x,ya,b,x,y,分别表示有 aaa 个蓝色糖果和 bbb 和红色糖果,现在有两种打包方式: xxx 个蓝色糖果和 yyy 个红色糖果 y ...

  2. Codeforces Round #725 (Div. 3) G. Gift Set 二分

    传送门 文章目录 题意: 思路: 题意: 有两种物品分别有x,yx,yx,y个,每次可以从一个拿出aaa个,另一个拿出bbb个分成一组,问最多能分成多少组. 思路: 这个题有一个显然的单调性,所以二分 ...

  3. NYOJ -804 Gift (二分)

    Gift 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 HEIHEI was planning to send his friends some necklaces a ...

  4. Codeforces 685C Optimal Point (二分、不同类型距离的相互转换)

    题目链接 https://codeforces.com/contest/685/problem/C 题解 我怎么又还差最后一步的时候放弃了然后往别的方向上想了一小时才发现这个思路能做-- 首先二分答案 ...

  5. Success Rate CodeForces - 807C (数学+二分)

    You are an experienced Codeforces user. Today you found out that during your activity on Codeforces ...

  6. Codeforces - 706B - Interesting drink - 二分 - 简单dp

    https://codeforces.com/problemset/problem/706/B 因为没有看见 $x_i$ 的上限是 $10^5$ ,就用了二分去做,实际上这道题因为可乐的价格上限是 $ ...

  7. codeforces数学1700[CodeForces 1336B[分类讨论+二分]CodeForces - 1301C[组合计数的减法原理]]

    CodeForces 1336B Xenia and Colorful Gems 题目大意:给你nrn_rnr​个xix_ixi​,ngn_gng​个yiy_iyi​,nbn_bnb​个ziz_izi ...

  8. 2018.12.08 codeforces 939E. Maximize!(二分答案)

    传送门 二分答案好题. 题意简述:要求支持动态在一个数列队尾加入一个新的数(保证数列单增),查询所有子数列的 最大值减平均值 的最大值. 然而网上一堆高人是用三分做的. 我们先考虑当前的答案有可能由什 ...

  9. CodeForces - 1486D Max Median(二分+最长连续子段和)

    题目链接:点击查看 题目大意:给出一个长度为 nnn 的数列,现在从长度至少为 kkk 的连续子段中,找到最大的中位数 题目分析:做过平均数的模型:POJ - 2018 Best Cow Fences ...

  10. CodeForces - 507E Breaking Good(二分+贪心)

    题目链接:点击查看 题目大意:给出 n 个竹子,初始时高度为 h[ i ],接下来每一天每个竹子都会长高 a[ i ] 个单位的高度,每一天可以砍 k 次竹子(可以是同一个),每次可以砍掉 p 个单位 ...

最新文章

  1. python线程的注意点(线程之间执行是无序的、主线程会等待所有的子线程执行结束再结束(守护主线程)、线程之间共享全局变量、线程之间共享全局变量数据出现错误问题(线程等待(join)、互斥锁))
  2. 2020多校第1场A题【后缀数组+思维】
  3. 整个宇宙可能是个巨大的神经网络?看科学家们是这样解释的
  4. 好的开始是成功的一半 -- 怎么做好一个项目的启动...
  5. 【★】Web精彩实战之智能迷宫
  6. 清空表中数据 id从1开始
  7. Windows+VS2015编译caffe+py-faster-rcnn
  8. 获取指定包名下的所有类
  9. mysql实时监听canal+kafka
  10. Java中的XSL转换:一种简单的方法
  11. 投入100亿,一所新“交通大学”选址定了!校名却让网友吵翻…
  12. 王道 —— 进程通信
  13. html css 深入理解float
  14. k近邻法的实现:kd树
  15. 计算机显示器的标准是什么,电脑显示器的标准相位是多少啊
  16. PHP7.2手册(最新版)
  17. 计算机会议等级排名,中国计算机学会推荐国际学术期刊(搬运于中国计算机学会)
  18. 手机OA是什么?有何优点?
  19. Qt美化之基础控件美化
  20. byref和byval区别的正确理解

热门文章

  1. 基于asp.net344运输公司车辆调度管理系统
  2. 连续最大积 hdu 4567
  3. mysql keepalived配置文件详解_Keepalived配置文件详解
  4. 感悟篇:我在B端做数据分析(一)
  5. 2016书单总结--看透SpringMvc源代码分析与实践-概述
  6. 【云原生 | 12】Dockerfile语法详解及举例
  7. mac上开启隐藏文件
  8. 《所谓情商高就是会说话》
  9. 中国IT的领路人——播布客
  10. vector详解以及一些问题(C++)