2018 計蒜之道 初賽 第三場

2021-08-20 03:18:37 字數 1618 閱讀 1316

貝殼找房有乙個價效比比較的系統,對於兩個** aa,b

b,aa 的**為 p_apa

​ 萬元,面積 s_asa

​ 平方公尺,b

b 的**為 p_bpb

​萬元,面積為 s_bsb

​ 平方公尺。他們的絕對價效比差定義成為 \displaystyle \frac∣s

a​−s

b​∣∣

pa​−

pb​∣

​。現在給出 n

n 個**的**和面積,請你求出一對**使得它們的絕對價效比差最大。

輸入第一行乙個整數 t

t 表示資料組數。

接下來輸入 t

t 組資料,每一組資料按照下面格式輸入。

第一行輸入乙個整數 n

n 表示**的個數。

接下來 n

n 行,每行輸入兩個整數 s_i, p_isi

​,pi

​,分別表示第 i

i 個**的面積為 s_isi

​ 平方公尺,**為 p_ipi

​ 萬元。

資料保證 1 \le t \le 501≤

t≤50

,2 \le n \le 10^5, |s_i|, |p_i| \le 10^82≤

n≤10

5,∣s

i​∣,

∣pi​

∣≤10

8,並且 沒有任何兩個**的面積和**都一樣。

對於每組資料輸出一行,如果該組資料的答案趨向於無窮大,輸出 -1−1

,否則,輸出最大的絕對價效比差。(所有輸出誤差在 10^10

−6以內都可以被接受)。

本題答案不唯一,符合要求的答案均正確

樣例輸入

2

41 3

4 57 8

3 62

4 10

4 11

樣例輸出

1.500000

-1

題解:按s從小到大,若s相同,則按p從小到大排列,

\displaystyle \frac∣s

a​−s

b​∣∣

pa​−

pb​∣

​,等價為在二維平面上找最大的斜率,然後可知,斜率絕對值最大的點一定相鄰

#include using namespace std;

#define ll long long

#define n 110000

struct node a[n];

bool cmp(const node &a, const node &b)

int main()

sort(a+1, a+n+1, cmp);

double ans = 0;

int flag = 0;

for(int i = 1; i < n; ++i)

ans = max(ans, fabs(1.0*(a[i].p-a[i+1].p)/(a[i].s-a[i+1].s)));

}if(flag)

printf("-1\n");

else

printf("%.7lf\n", ans);

}return 0;

}

2017 計蒜之道 初賽 第三場

在乙個長度為 ll 公尺的光滑軌道上,小車 a 在 00 時刻以 1 mathrm1m s 的速度從左端出發向右運動,小車 b 在 tt 時刻以 1 mathrm1m s 的速度從右端出發向左運動,兩個小車的質量相等。假設所有碰撞都是彈性碰撞,也就是當兩個小車相向碰撞時,他們各自會以原來的速度向相反...

2017 計蒜之道 初賽 第三場

在乙個長度為 ll 公尺的光滑軌道上,小車 a 在 00 時刻以 1 mathrm1m s 的速度從左端出發向右運動,小車 b 在 tt 時刻以 1 mathrm1m s 的速度從右端出發向左運動,兩個小車的質量相等。假設所有碰撞都是彈性碰撞,也就是當兩個小車相向碰撞時,他們各自會以原來的速度向相反...

2019 計蒜之道 初賽 第三場 A,B,C,D

傳送門 a.商品 大pk 求最長上公升子串行,然後看了下資料範圍很小,就暴力列舉刪除哪個數字即可,時間複雜度為n的3次方 include define int long long using namespace std int maxn 1010 int maxline int a,int n so...