CodeForces 1538G : Gift Set 思维 + 二分
传送门
题目描述
Polycarp有xxx个红糖和yyy个蓝糖,现在他想用这些糖果做一些礼品盒(gift set),但规定每个礼品盒里必须有aaa个红糖、bbb个蓝糖或bbb个红糖、aaa个蓝糖。现在求他最多能做成多少个礼品盒。
分析
没啥思路,借鉴的大佬的博客
代码
#pragma GCC optimize(3)
#include <bits/stdc++.h>
#define debug(x) cout<<#x<<":"<<x<<endl;
#define dl(x) printf("%lld\n",x);
#define di(x) printf("%d\n",x);
#define _CRT_SECURE_NO_WARNINGS
#define pb push_back
#define mp make_pair
#define all(x) (x).begin(),(x).end()
#define fi first
#define se second
#define SZ(x) ((int)(x).size())
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> PII;
typedef vector<int> VI;
const int INF = 0x3f3f3f3f;
const int N = 2e5 + 10;
const ll mod = 1000000007;
const double eps = 1e-9;
const double PI = acos(-1);
template<typename T>inline void read(T &a) {char c = getchar(); T x = 0, f = 1; while (!isdigit(c)) {if (c == '-')f = -1; c = getchar();}while (isdigit(c)) {x = (x << 1) + (x << 3) + c - '0'; c = getchar();} a = f * x;
}
int gcd(int a, int b) {return (b > 0) ? gcd(b, a % b) : a;}
ll x,y,a,b;bool check(int mid){int l = ceil(1.0 * (x - b * mid) / (a - b));int r = floor(1.0 * (y - a * mid) / (b - a));l = max(0,l),r = min(r,mid);return r >= l;
}int main() {int T;read(T);while(T--){read(x),read(y),read(a),read(b);if(a == b){di(min(x,y) / a);continue;}if(x > y) swap(x,y);if(a > b) swap(a,b);int l = 0,r = INF,ans = -1;while(l <= r){int mid = l + r >> 1;if(check(mid)){ans = mid;l = mid + 1;}else r = mid - 1;}di(ans);}return 0;
}/**
* ┏┓ ┏┓+ +
* ┏┛┻━━━┛┻┓ + +
* ┃ ┃
* ┃ ━ ┃ ++ + + +
* ████━████+
* ◥██◤ ◥██◤ +
* ┃ ┻ ┃
* ┃ ┃ + +
* ┗━┓ ┏━┛
* ┃ ┃ + + + +Code is far away from
* ┃ ┃ + bug with the animal protecting
* ┃ ┗━━━┓ 神兽保佑,代码无bug
* ┃ ┣┓
* ┃ ┏┛
* ┗┓┓┏━┳┓┏┛ + + + +
* ┃┫┫ ┃┫┫
* ┗┻┛ ┗┻┛+ + + +
*/
CodeForces 1538G : Gift Set 思维 + 二分相关推荐
- CodeForces - 1538G Gift Set(二分)
题目链接:点击查看 题目大意:给出 a,b,x,ya,b,x,ya,b,x,y,分别表示有 aaa 个蓝色糖果和 bbb 和红色糖果,现在有两种打包方式: xxx 个蓝色糖果和 yyy 个红色糖果 y ...
- Codeforces 895 B XK Segments 思维 二分
题目链接: http://codeforces.com/contest/895/problem/B 题目描述: 给你长度为n的数列a,然后让你找出所有的对(i,j)满足ai≤aj并且[ai,aj]中能 ...
- CodeForces - 51C 修信号站_思维+二分答案
题目 给你x轴上的n个点,可以用三段相同长度的区间进行覆盖,问你这三个区间的最小长度是多少,并输出三段区间的中点. 求解 前半个问题应该不难,直接二分答案即可,后半个问题则有些思维成分.另外,这题让我 ...
- Voltage Keepsake CodeForces - 801C (思维+二分)
题目链接 这是一道很棒的二分题. 思路: 首先先思考什么情况下是可以无限的使用,即输出-1. 我们思考可知,如果每一秒内所有设备的用电量总和小于等于充电器每秒可以充的电,那么这一群设备就可以无限使用. ...
- Codeforces Round #481 (Div. 3) F. Mentors(思维+二分)
有 n 个程序员,每个程序员都有他的技能分数,分数严格高的可以做分数低的程序员的老师,但是有 k 对人发生过矛盾,他们不能构成师生关系,问每个人最多可以做几个人的老师 开始想的是开一个数组从 i∈[1 ...
- CodeForces - 1324D Pair of Topics(思维+二分)
题目链接:https://vjudge.net/contest/362265#problem/D The next lecture in a high school requires two topi ...
- Educational Codeforces Round 64 -C(二分)
题目链接:https://codeforces.com/contest/1156/problem/C 题意:给出n个数和整形数z,定义一对数为差>=z的数,且每个数最多和一个数组成对,求最多有多 ...
- Codeforces 484B Maximum Value(高效+二分)
题目链接:Codeforces 484B Maximum Value 题目大意:给定一个序列,找到连个数ai和aj,ai%aj尽量大,而且ai≥aj 解题思路:类似于素数筛选法的方式,每次枚举aj,然 ...
- 1041D - Glider(思维+二分+前缀和)
https://codeforces.com/problemset/problem/1041/D 思路: 可以发现,选择的起点在当前某个线段区间的左端点一定不会更差. 于是On枚举起点位置,快速找到其 ...
- CodeForces - 645C Enduring Exodus(二分)
题目链接:http://codeforces.com/problemset/problem/645/C 题意:给你n个房间, 0代表空房子, 1代表非空的房子, 一个农夫和他的k个牛要住进空房子里面, ...
最新文章
- 【新无人机数据集】从 行人重识别 到 无人机目标定位
- 图像检索:几类基于内容的图像分类技术
- “面试不败计划”:各大公司Java后端开发面试题总结
- 全球及中国汽车涂料市场前景态势与投资渠道分析报告2022版
- TensorFlow基础笔记(5) VGGnet_test
- eBay | 实践Hadoop任务的性能翻倍之路
- 三维位姿:***图像特征-特征提取-姿态估计
- Unity3D学习笔记之五为Prefab添加材质
- I_LIKE_CPP 多特游戏下载
- js中的date操作
- java关于Timer schedule执行定时任务 1、在应用开发中,经常需要一些周期性的操作,比如每5分钟执行某一操作等...
- render注册一个链接组件_vue: 单文件组件 render函数
- 使用POI导入导出Excel2003、2007示例
- [VSTO系列]二、简单的UI设计/QQ联系人导出(上)
- python实现命令行工具jq的json路径过滤
- SQL Unicode
- Netty4.0学习笔记系列之六:多种通讯协议支持
- 【唐宇迪】神经网络原理解读与整体架构
- cad填充密度怎么调整_CAD填充技巧之填充比例
- android 蓝牙与单片机通信原理图,单片机结合蓝牙模块串口通信