专栏文章
8.22测试总结
算法·理论参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mio6udco
- 此快照首次捕获于
- 2025/12/02 14:19 3 个月前
- 此快照最后确认于
- 2025/12/02 14:19 3 个月前
测试总结

得分:
应得:
考点:二分
错误思路:暴力-模拟,能选的方法就选它,然后再考虑或,使用进行以上过程
正确思路:使用二分进行模拟,得出结果(因为本题具有单调性)
CPP1.输入.
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 条评论,欢迎与作者交流。
正在加载评论...