OJ 39 左手右手

2022-05-09 16:51:39 字數 2479 閱讀 7007

[oj#39]左手右手

試題描述

有 n'>n

個人,每個人左右手上各寫著乙個整數。對於編號為 a

'>a

的人和編號為 b

'>b

的人, a

'>a

對 b'>b

的好感度等於 a

'>a

左手上寫的數字乘 b

'>b

右手上寫的數字,a

'>a

和 b'>b

的好感度差異等於 a

'>a

對 b'>b

的好感度與 b

'>b

對 a'>a

的好感度之差的絕對值。

現在,你要從這 n

'>n

個人中找出兩個人使得他們的好感度差異最大。

輸入

第一行乙個整數 n

'>n

。接下來 n

'>n

行,每行兩個整數 ai,

bi'>ai

,bi,分別表示第 i

'>i

個人左右手上寫的數字。

輸出

輸出乙個整數表示好感度差異的最大值。

輸入示例

5

9 -178

-249 -6

35

輸出示例

114

資料規模及約定2≤

n≤105

'>2≤n≤105

,−109≤

ai,b

i≤109

'>−109

≤ai,bi

≤109

2≤n

≤105'>−109

≤ai,

bi≤10

9'>題解

2≤

n≤105

'>−109

≤ai,

bi≤10

9'>首先我們可以發現兩個人 i, j 的好感度差異就是兩個向量 (ai, bi) 和 (aj, bj) 的叉積的絕對值。那麼要讓這個值最大,就是要選擇兩個向量使得它們圍成的三角形面積最大。

我們不妨先列舉其中乙個向量x,可以發現與它叉積絕對值最大的向量y一定在凸包上。我們做平行於向量x的直線,顯然如果向量y的終點在直線上,這條直線離原點越遠越好,所以一定是在凸包上的。

所以我們先處理出凸包,然後把所有向量按照極角排序,用旋轉卡殼的方法去做就可以 o(n) 了。

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

int read()

while(isdigit(c))

return x * f;

}#define maxn 100010

#define ll long long

struct vec

vec(ll _, ll __): x(_), y(__) {}

vec operator - (const vec& t) const

ll operator ^ (const vec& t) const

bool operator < (const vec& t) const

} ps[maxn], poly[maxn];

int cntp, s[maxn], top;

bool cmp(vec a, vec b)

#define nxt(x) (x + 1) % cntp

#define pre(x) (x + cntp - 1) % cntp

int main()

sort(ps + 1, ps + n + 1);

s[top = 1] = 1;

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

for(int i = 1; i <= top; i++) poly[cntp++] = ps[s[i]];

int upend = cntp - 1;

s[top = 1] = 1;

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

for(int i = top - 1; i > 1; i--) poly[cntp++] = ps[s[i]];

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

int l = 0, r = upend; ll ans = 0;

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

printf("%lld\n", ans);

return 0;

}

左手與右手

左手與右手 從 天才 想到的 我發現我們 佩服 的人往往沒能積極的影響我們,有時候反而會限制我們。由於時間或地域的分隔,一些人的成長過程我們是看不到的,但在那些成長過程不被我們看到的人們中,一定會有一些人會在某乙個方面看上去比一般人 長 一些,於是當他 她們突然出現在我們面前的時候,然後我們會被他們...

右手握左手

桌上流行一首順口溜 握著老婆的手,好像右手握左手。每當有人唸出 熟悉的或不熟悉的一桌子人便會意地放聲笑起來,氣氛立刻就輕鬆了。當然,這是基於人家對該順口溜的一致理解 感覺準確,描述到位。有一天在餐桌上有人又唸起這段順口溜,男人們照例笑得起勁。後來發現餐桌上的一位女人沒笑。男人們忙說鬧著玩別當真。沒想...

南陽oj 39 水仙花數

時間限制 1000 ms 記憶體限制 65535 kb 難度 0 描述 請判斷乙個數是不是水仙花數。其中水仙花數定義各個位數立方和等於它本身的三位數。輸入有多組測試資料,每組測試資料以包含乙個整數n 100 n 1000 輸入0表示程式輸入結束。輸出如果n是水仙花數就輸出yes 否則輸出no 樣例輸...