玩《Minecraft》的贝贝

贝贝通过指令获得了 n 个木棍和  m 个钻石,以及一个工作台,他想要制造尽可能多的工具。
一共有五种钻石工具,下面是每种钻石工具的合成方案:

输入
第一行,一个整数,为数组组数 T (1 ≤ T ≤ 1e5)。
接下来的 T 行,每行两个以空格分隔的整数 n,m (0 ≤ n,m ≤ 1e9)。

输出
输出 T 行,每行一个整数,表示该组数据可制作工具数量的最大值。

Input
3
2 9
5 4
6 7

Output
2
3
4

解析1:
容易知道我们选择工具 3 和 5,由于两个需要的材料个数对称。所以设x,y。x个钻石,y根木棍和x根木棍,y个钻石所能合成的工具的个数是一样的。
假设 x>y:

当x>=2*y的时候,由于我们的比例可以按照2:1来制造,最多得到了y个工具。 

当x<2*y的时候,我们就要尽可能让由于两个方法都是按照2:1来制作。我们就用求解当前最优。我们先把x比y多的拿去制作,找到x,y相同。
即 x-2*k=y-k,解得k=x-y;
当 x,y 相同的时候,也就是制作了x-y 把工具后,这时候 x 还剩下 2*y-x 个,这时候两种材料个数相同,用这些材料按照 3:3 制作。

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
#define ios ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
int gcd(int a,int b) { return b? gcd(b,a%b) : a; }
typedef pair<int,int> PII;
const double PI=acos(-1.0);
const int N=2e6+10;
int x,y;
void solve()
{cin>>x>>y;if (x<y) swap(x,y);if (x>=2*y) cout<<y<<endl;else {int k=x-y;k +=(2*y-x)/3*2;if ((2*y-x)%3==2) k++;cout<<k<<endl;}
}
signed main()
{ios;int T=1;cin>>T;while (T--) solve(); return 0;
}

解析2:
x+2y=n,y+2x=m,其中x是我们造钻石铲的数量,y是我们造钻石剑的数量,解这个方程即可。
解得 x=(2*m-n)/3.0,y=(2*n-m)/3.0。 

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
#define ios ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
int gcd(int a,int b) { return b? gcd(b,a%b) : a; }
typedef pair<int,int> PII;
const double PI=acos(-1.0);
const int N=2e6+10;
int n,m;
void solve()
{cin>>n>>m;double x=(2*m-n)/3.0;double y=(2*n-m)/3.0;if (x<0) cout<<min(n/2,m)<<endl;else if (y<0) cout<<min(m/2,n)<<endl;else cout<<(int)(x+y)<<endl;
}
signed main()
{ios;int T=1;cin>>T;while (T--) solve(); return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/417800.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【软件测试】学习笔记-统一测试数据平台

这篇文章主要探讨全球大型电商企业中关于准备测试数据的最佳实践&#xff0c;从全球大型电商企业早期的测试数据准备实践谈起&#xff0c;分析这些测试数据准备方法在落地时遇到的问题&#xff0c;以及如何在实践中解决这些问题。其实&#xff0c;这种分析问题、解决问题的思路…

储能变流器(PCS)构网型和跟网型区别

跟网型本质为电流源&#xff0c;自身无法提供电压与频率支撑&#xff0c;必须依赖电网电压和频率&#xff0c;无法支撑系统&#xff1b;构网型本质为电压源&#xff0c;内部设定电压参数信号输出电压与频率&#xff0c;既可并网也可离网运行&#xff0c;对电网支撑能力强。因新…

日志记录logging

文章目录 1. logging基础使用1.1 日志的6个级别1.2 logging.basicConfig1.3 案例 2. logging的高级应用2.1 记录器Logger2.2 处理器- Handler2.3 格式器- Formatter2.4 创建关联2.4 案例 3.在项目中的应用3.1 定义全局使用的logger对象3.2 使用案例 参考 1. logging基础使用 1…

【JavaEE】CAS

作者主页&#xff1a;paper jie_博客 本文作者&#xff1a;大家好&#xff0c;我是paper jie&#xff0c;感谢你阅读本文&#xff0c;欢迎一建三连哦。 本文于《JavaEE》专栏&#xff0c;本专栏是针对于大学生&#xff0c;编程小白精心打造的。笔者用重金(时间和精力)打造&…

Quantlab3.4代码发布 | lightGBM排序轮动 | 29个行业机器学习合成因子轮动策略(代码+数据+模型下载)

原创文章第444篇&#xff0c;专注“AI量化投资、个人成长与财富自由"。 按咱们星球的惯例&#xff0c;今天发布代码&#xff1a;Quantlab3.4。 quantlab 3.4重要更新&#xff1a; 1、支持截面rank函数写因子。 2、alpha158因子集。 3、lightgbm分类和排序模型。 …

006.Oracle事务处理

我 的 个 人 主 页&#xff1a;&#x1f449;&#x1f449; 失心疯的个人主页 &#x1f448;&#x1f448; 入 门 教 程 推 荐 &#xff1a;&#x1f449;&#x1f449; Python零基础入门教程合集 &#x1f448;&#x1f448; 虚 拟 环 境 搭 建 &#xff1a;&#x1f449;&…

洛谷NOIP2002 普及组 选数 +NOIP1999普及组 回文数

两道日常的练习题&#xff0c;废话不多说&#xff0c;直接上题上代码&#xff1a; 这道题目的难点在于怎样去根据一个不同的k值&#xff0c;通过代码来实现将所有符合题目要求的数字相加并且不重复的功能。下面请看代码&#xff0c;会有详细的讲解&#xff1a; #include<io…

实现分布式锁

背景 分布式锁是一种用于协调分布式系统中多个节点之间并发访问共享资源的机制。在分布式系统中&#xff0c;由于存在多个节点同时访问共享资源的可能性&#xff0c;需要使用分布式锁来保证数据的一致性和正确性。 今天要实现的是分布式场景中的互斥类型的锁。 下面时分布…

burp靶场--文件上传

burp靶场–文件上传 https://portswigger.net/web-security/file-upload/lab-file-upload-remote-code-execution-via-web-shell-upload 1.文件上传 1、原理&#xff1a;文件上传漏洞是指Web服务器允许用户将文件上传到其文件系统&#xff0c;而不充分验证文件的名称、类型、…

一文详解Bitcoin Wallet(btc钱包),推荐bitget钱包

​ 比特币&#xff08;BTC&#xff09;是什么&#xff1f; 比特币&#xff08;BTC&#xff09;于 2008 年由中本聪创建&#xff0c;是一个去中心化的点对点网络。这个开创性的系统运用了密码学技术和分布式账本技术&#xff0c;无需中央权威机构的验证。比特币的诞生标志着去中…

【Linux的基本指令】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言 1、ls 指令 2、 pwd命令 3、cd 指令 4、touch指令 5、mkdir指令&#xff08;重要&#xff09; 6、rmdir指令 && rm 指令&#xff08;重要&#xff09;…

产品经理NPDP

产品经理是告诉团队做正确的事情&#xff0c;项目经理是告诉团队正确地做事情 产品经理的核心能力是商业洞察能力、产品规划与设计、团队管理能力。 产品经理国际资格认证(NPDP)