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;
}
相关推荐
罗湖老棍子1 小时前
【例 2】牧场的安排(信息学奥赛一本通- P1593)三角形牧场(洛谷-P1284)
算法·动态规划·状压dp·状态压缩动态规划
HPtiger1 小时前
交换类排序详解:冒泡排序与快速排序
数据结构·算法·排序算法
Cccp.1232 小时前
【leetcode】(十四)从暴力递归到动态规划
数据结构·算法·leetcode·动态规划
旖旎夜光2 小时前
LeetCode 215: 数组中的第K个最大元素 (快速排序) —— 题解
c++·学习·算法·leetcode·力控
技术胖2 小时前
奎爷巡演 AIGC 视频教程 文档
算法
德彪稳坐倒骑驴3 小时前
Leetcode力扣刷题记录与题解
算法·leetcode·职场和发展
lzhdim9 小时前
AI的分类
人工智能·算法·机器学习·分类·数据挖掘
凤凰院凶涛QAQ12 小时前
《Java版数据结构 & 集合类剖析》Map & Set & 反射:“从哈希碰撞到红黑树转换,反射帮你扒开 HashMap 的桶数组看个究竟”
java·数据结构·算法
w_zero_one14 小时前
算法--模拟
java·数据结构·算法