题意分析

在一个平面直角坐标系中,做以x1,y1x2,y2x1,y1 x2,y2为圆心的原,覆盖nn个点求半径平方最小值。

思路解析

思路一

运用贪心思想,枚举每个点的最优情况,求最小值。 得40分

思路二

枚举aa覆盖11~nn个点的情况,再让bb覆盖剩下的点,求最小值。

代码一:

运用循环求bb覆盖范围 得70分

    for(int i=1;i<=n;i++){
		long long nmaxx=0;
		for(int j=i+1;j<=n;j++){
			nmaxx=max(nmaxx,s[j].s2);
		}
		maxx=min(maxx,(s[i].s1+nmaxx));
	}
	cout<<maxx;
代码二

逆向思维,让aa从大到小覆盖,用o(1)o(1)的时间复杂度求bb的范围

    for(int i=n;i>=1;i--){
		maxx=max(maxx,s[i].s2);
		minn=min(minn,maxx+s[i].s1);
	}
	cout<<maxx;

0 条评论

目前还没有评论...