題目:
整體思路:
只有當甲乙同時到達目的地時才是使用時間最短的方法,因此先求出二者到達目的地所需要的時間的表示式,以時間近似相等為判定條件;通過調整甲在中途下車的地點(使用二分法)而得出答案
二分法**:
#include
#include
int main()
{double s,s1,s2,v1,v2,t1,t2,p;
double a,b;
scanf("%lf%lf%lf",&s,&v1,&v2);
s1=0;//s1標記左邊界
s2=s;//s2標記右邊界do{
p=(s1+s2)/2.0;//用p作為指標
a=p/v2;//車載甲所花的時間記為a
b=(p-a*v1)/(v1+v2);//車返回遇見乙所花的時間記為b
t1=a+(s-p)/v1;//甲到達目的地所花的總時間
t2=a+b+(s-(a+b)*v1)/v2;//乙到達目的地所花的總時間
if(t11e-8);//用fabs求二者差的絕對值,因為可能會有負數的出現,記得標上cmath標頭檔案
printf("%.6lf",t1);//按照題目要求保留六位小數
return 0;
萌新疑問:
1、如何證明二者同時到達目的地時所需要的的時間最短,即答案;
2、我覺得甲和乙可以通過多次上落車來縮短時間來使時間更短,但是腦袋明顯不夠用的說,可能是我想的太複雜了?
一道C 競賽題
題目的大致意思是 一些數字順時針排成乙個圈,最上面的是1,從1開始,隔乙個數,移除乙個數,順時針一直移下去,直到最後剩下兩個數,這兩個數就是幸運數字。例如1 2 3 4 5,開始如下圖 然後從1開始隔乙個去掉乙個數,如下圖 這個時候已經一輪了,但是剩餘數字還大於2,所以繼續去,這個時候4被去掉了,跳...
17藍橋杯競賽題「取數字」
求1個整數的第k位數字有很多種方法。以下的方法就是一種。public class main 取x的第k位數字 static int f int x,int k public static void main string args 對於題目中的測試資料,應該列印5。請仔細分析原始碼,並補充劃線部分所...
LeetCode 競賽題 890 查詢和替換模式
你有乙個單詞列表words和乙個模式pattern,你想知道words中的哪些單詞與模式匹配。如果存在字母的排列p,使得將模式中的每個字母x替換為p x 之後,我們就得到了所需的單詞,那麼單詞與模式是匹配的。回想一下,字母的排列是從字母到字母的雙射 每個字母對映到另乙個字母,沒有兩個字母對映到同乙個...