題意:現在有n+1
n+1n+
1輛車在一條路上跑,每個車有個長度l[i
]l[i]
l[i]
,速度v[i
]v[i]
v[i]
,車頭與終點的距離s[i
]s[i]
s[i]
,後面的車不能超過前面的車,車開過終點之後繼續開,問最後一輛車車頭到達終點的時間。
解題心得:很多人推不出樣例,這是因為車在開過終點之後繼續開,也就是說車在開過終點之後仍然可能造成堵車。其實二分一下時間就可以了,二分時間看一下最後一輛車是否駛離了終點,檢驗的時候要注意當前車不論多快只能開到前一輛車的屁股上。比賽的時候用了lon
gdou
bl
elong\ double
longdo
uble
結果hdoj不能用lon
gdou
bl
elong\ double
longdo
uble
,錯了半天不知道為啥真的難受。杜老師在講題的時候似乎講了乙個更快跟簡單的方法,當時沒注意聽。
#include
#define fi first
#define se second
using namespace std;
typedef
long
long ll;
typedef
unsigned
long
long ull;
const
int maxn =
2e6+5;
const
int mod =
1e9+7;
const
double eps =
1e-9
;double l[maxn]
, s[maxn]
, v[maxn]
;int n;
intcmp
(double x)
bool check
(double t)if(
cmp(dis - dis + l[i +1]
)>0)
else
}return
cmp(dis -0)
>=0;
}int
main()
for(
int i =
0; i <= n; i++
)scanf
("%lf"
,&v[i]);
double l =
0, r =
1e9+1;
for(
int cnt =
0; cnt <=
100; cnt++
)printf
("%.10f\n"
, r);}
return0;
}
2019杭電多校第一場
dp i j k t dp i j k t dp i j k t 表示0 1 2,3 0,1,2,3 0,1,2,3出現的位置排序後為i,j k,t i,j,k,t i,j,k,t的方案數 列舉第t 1 t 1t 1位的情況進行轉移 對於限制情況,固定右端點,暴力列舉所有狀態,把所有非法狀態清零 i...
2019 杭電多校(第一場)
題目 1002 operation 線性基 題意給你n個數 兩個操作,查詢l r區間異或最大值 在陣列最後麵加一數 思路維護兩個陣列 1 b i j 儲存a 1 到a i 之間的第j位線性基。2 pos i j 儲存最大的l a l 使得b i j 有值。對於每一次詢問 l,r 如果pos r j ...
2019杭電多校第一場
從右到左分別為0 n輛車,每輛車有長度l,起始位置s和速度v,0座標在左邊,不能超車,單車道,問0號車到達0座標的最短時間。最短時間考慮二分時間,然後按這個時間從左邊第一輛車開始依次計算最終位置,最後判斷0號車的位置即可。include using namespace std const int n...