貝殼找房有乙個價效比比較的系統,對於兩個** 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以內都可以被接受)。
本題答案不唯一,符合要求的答案均正確
樣例輸入
241 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...