小數的二分

2021-07-16 13:47:18 字數 1454 閱讀 2790

我們先考慮一下,如果是個double型別的,那麼在二分的過程中,實際上,是乙個開區間,而不是整數型時候的閉區間。這樣最後的限制條件應該是l - r > 0.0001(取精度)

其他和整數的是一樣的。

double lower_bound2(double x,double  y)

else

x = m;

}return x;

}

下面是乙個例題

題意:桐桐要依次經過幾個點,每個點都有乙個最早到達時間(如果到達的時間比這個早,就要等著。)和乙個最晚到達時間(不能比這個時間還晚),以及每個點與前乙個點的距離。桐桐依次經過這麼幾個點。問最少的速度是多少?

解析:對速度二分。如果當前速度是合適的,那麼更大的速度一定合適,更小的速度可能合適。尋找lower_bound

**:

#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;

int x[200006],y[200006],s[200006];

double const inf = 10000001;

int n;

bool judge(double speed)

if(s[i] / speed + now< x[i])

else

}return true;

}double lower_bound2(double x,double y)

else

x = m;

}return x;

}int main()

speed = lower_bound2(0,inf);

printf("%.2f\n",speed);

return 0;

}

#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;

int x[200006],y[200006],s[200006],sum[200006];

int main()

bool flag;

double now = 0;

while(1)

if(s[i] / speed + now< x[i])

else

}if(flag == false)

break;

}printf("%.2f\n",speed);

return 0;

}

資料顯然是水的(至少不夠卡我)

第K小數(二分)

問題描述 有兩個正整數數列,元素個數分別為n和m。從兩個數列中分別任取乙個數 相乘,這樣一共可以得到nm個數,詢問這nm個數中第k小數是多少。輸入格式 輸入檔名為number.in。輸入檔案包含三行。第一行為三個正整數n,m和k。第二行為n個正整數,表示第乙個數列。第三行為m個正整數,表述第二個數列...

第K小數(二分)

問題描述 有兩個正整數數列,元素個數分別為n和m。從兩個數列中分別任取乙個數 相乘,這樣一共可以得到n m個數,詢問這n m個數中第k小數是多少。輸入格式 輸入檔案包含三行。第一行為三個正整數n,m和k。第二行為n個正整數,表示第乙個數列。第三行為m個正整數,表述第二個數列。輸出格式 輸出檔案包含一...

hiho 1133 二分 二分查詢之k小數

時間限制 10000ms 單點時限 1000ms 記憶體限制 256mb 描述在上一回裡我們知道nettle在玩 艦 nettle的鎮守府有很多船位,但船位再多也是有限的。nettle通過撈船又出了一艘稀有的船,但是已有的n 1 n 1,000,000 個船位都已經有船了。所以nettle不得不把其...