专栏文章

8.22测试总结

算法·理论参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@mio6udco
此快照首次捕获于
2025/12/02 14:19
3 个月前
此快照最后确认于
2025/12/02 14:19
3 个月前
查看原文

8.218.21测试总结

T638475调酒大师T638475 调酒大师

得分:00

应得:100100

考点:二分

错误思路:暴力-模拟,能选222-2的方法就选它,然后再考虑131-3313-1,使用dfsdfs进行以上过程

正确思路:使用二分进行模拟,得出结果(因为本题具有单调性)

CPP
1.输入.
2.定义l,r(于核心代码2)
3.定义二分边界(于核心代码2)
4.判断(check函数)
5.check函数(于核心代码1)
6.输出

核心代码1:

CPP

bool check(int mid){
	if(n<mid||m<mid||m+n<mid*4)return 0;
	return 1;
}

核心代码2:

CPP

        while(l+1<r)
		{
			int mid=(l+r)/2;
			if(check(mid))
			{
				l=mid;
			}
			else
			{
				r=mid;
			}
		}

完整代码:

CPP
#include<bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;
int t,maxx=0;
int n,m;
bool check(int mid){
	if(n<mid||m<mid||m+n<mid*4)return 0;//三种失败情况
	return 1;//成功
}
signed main()
{
	cin>>t;
	while(t--)//t组数据
	{
		cin>>n>>m;
		int l=0,r=n+1;//初始便捷
		while(l+1<r)//边界
		{
			int mid=(l+r)/2;//二分
			if(check(mid))//判断
			{
				l=mid;//成功:更新l
			}
			else
			{
				r=mid;失败:更新r
			}
		}
		cout<<l<<endl;//输出
	}
	return 0;//结束
}

评论

0 条评论,欢迎与作者交流。

正在加载评论...