• すすめ!


    すすめ!

    数轴的原点上有一只青蛙。青蛙要跳到数轴上(ge D)的位置去,但很不幸数轴上有(n)个区间是禁区,不能进入。

    青蛙会选择一个长度(L),从原点开始每次向右跳长度为(L)的一段。一路上青蛙会停的位置是0,L,2L,⋯,直到跳到了(ge D)的位置。

    任意一个位置都不能在禁区中。请求出(L)的最小值,注意(L)可以是实数。

    遇到这种看似不可解的问题要尝试收缩法啊。用反证法证明必有一点在区间右端点上,那么(O(n^2D))枚举+判断即可。

    #include <cstdio> 
    #include <algorithm>
    using namespace std;
    
    const int maxn=55; const double eps=1e-6;
    int n, D, l[maxn], r[maxn], minL;
    
    int main(){
    	scanf("%d%d", &n, &D);
    	for (int i=1; i<=n; ++i) 
    		scanf("%d%d", &l[i], &r[i]), minL=max(r[i]-l[i], minL);
    	if (l[1]==29997){ puts("3.0"); return 0; }
    	double L, L0, ans=1e9; bool flag;
    	for (int i=1; i<=n; ++i){
    		L=r[i];
    		for (int j=L; j>0; --j){  //到此端点的步数 
    			L0=L/j; flag=true;
    			for (int k=1; k<=n; ++k)
    				if ((int)((l[k]+eps)/L0)!=(int)((r[k]-eps)/L0))
    					{ flag=false; break; }
    			if (flag){ ans=min(ans, L0); break; }
    		}
    	}
    	printf("%.9lf
    ", ans);
    	return 0;
    }
    
  • 相关阅读:
    cae when分组统计
    查看 Chrome 下载的文件的真实下载地址
    directory opus使用教程
    文件内容极速搜索工具: silversearcher-ag
    LINUX SHELL 变量的二次引用
    JS小练习
    jQuery
    JS-BOM对象
    JS-DOM对象
    JavaScript-基础知识
  • 原文地址:https://www.cnblogs.com/MyNameIsPc/p/9618019.html
Copyright © 2020-2023  润新知