关于第一篇O(1)复杂度题解中b必须是三个数中最大数的错误
查看原帖
关于第一篇O(1)复杂度题解中b必须是三个数中最大数的错误
699110
kelanjie楼主2022/10/10 21:33

我的代码是 s1s_1 \le s2s_2 \le s3s_3 如果将 bbcc 交换大小,只需要判断题解中那个频数分布直方图(并不是),是否有小于0的情况, 送俩样例:

输入:2 2 4
输出:5
输入:3 2 8
输出:6
#include<bits/stdc++.h>
using namespace std;
int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	
	double d;
	int i,j,s1,s2,s3,e=0;
	cin>>s1>>s2>>s3;
	if(s1>s2)	swap(s1,s2);
	if(s2>s3)	swap(s2,s3);
	if(s1>s2)	swap(s1,s2);
	 //最后:s1<=s2<=s3
	d=(s1+s2-s3-1)/2.0;
    //double型,负数下取整是向0靠
//	cout<<"d="<<d<<"  (int)"<<(int)d<<endl;
	if(d<0) //s1+s2-1<s3
	{
		cout<<2+s1+s2-1;
		return 0;
	}
	cout<<(s1+s2-s3-1)/2+2+s3<<endl;
    //和题解换了个思路,看两边哪些不选
	return 0;
}
2022/10/10 21:33
加载中...