Div.2 CF edu195A题(数学,贪心)

题目链接:https://codeforces.com/contest/2276/problem/A

题目大意:

给定奶酪和香肠的总数,在必须全部用完且每个三明治的奶酪数严格大于香肠数的前提下,求最多能做多少个三明治(无解输出-1)。

题目思路:

可以知道如果b>=a,那么一定无解,因为不能保证所有三明治中奶酪数严格大于香肠数,否则就一定存在合法分配方案,令d=a-b表示多余的奶酪,假如此时有x个三明治,其中每个三明治的奶酪和香肠数一样,如果d>b,说明可以做最多b个三明治,如果d<b,那么就只能做d个三明治,因为此时不能保证每个三明治被分配到多余奶酪了

时间复杂度O(1)

代码如下:

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;
#define endl "\n"
// #define int long long
/*
https://codeforces.com/contest/2276/problem/A
Div.2 CF edu195A题(数学,贪心)
题目大意:给定奶酪和香肠的总数,在必须全部用完且每个三明治的奶酪数
严格大于香肠数的前提下,求最多能做多少个三明治(无解输出-1)。

题目思路:可以知道如果b>=a,那么一定无解,因为不能保证所有三明治中奶酪数严格大于香肠数,
否则就一定存在合法分配方案,令d=a-b表示多余的奶酪,假如此时有x个三明治,
其中每个三明治的奶酪和香肠数一样,如果d>b,说明可以做最多b个三明治,
如果d<b,那么就只能做d个三明治,因为此时不能保证每个三明治被分配到多余奶酪了
*/
// 时间复杂度O(1)
void solve()
{
    int a, b;
    cin >> a >> b;
    if (b >= a)//奶酪数不大于香肠数
    {
        cout << -1 << endl;
        return;
    }
    int d = a - b;//多余奶酪
    cout << min(d, b) << endl;//取最小
}
signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int T = 1;
    cin >> T;
    while (T--)
    {
        solve();
    }
    return 0;
}
相关推荐
csdn_aspnet21 分钟前
C++ 3个有序点的方向(Orientation of 3 ordered points)
c++·算法
赤生云电竞1 小时前
GPU算力共享平台架构实践:任务分发与资源隔离的关键配置
算法·架构·gpu算力
青少儿编程课堂2 小时前
蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级:折半搜索优化子集枚举(Meet in the Middle)解析
c++·python·算法·bfs·信息学竞赛
伟大的车尔尼4 小时前
贪心题目:重构 2 行二进制矩阵
贪心
Oneshot4 小时前
DLX(Dancing Links)算法详解:求解数独最快的算法
算法
青少儿编程课堂5 小时前
蓝桥杯青少组图形化 + 全国青少年信息素养大赛 + 电子学会Scratch考级:校园连连看解析
c++·python·算法·bfs·信息学竞赛
kongdong5 小时前
Hikyuu | RSI均值回归交易策略实现
算法·均值算法·回归·量化交易·交易策略·hikyuu
小王C语言5 小时前
优选算法:分治-归并排序
算法
非优秀程序员16 小时前
第05章 播放器大战,暴风、快播与那一夜|《互联网产品恩仇录》
算法