USACO 2020二月青銅第一題題解報告

2021-10-08 14:40:11 字數 2500 閱讀 3055

farmer john 想要給他的奶牛們建造乙個三角形牧場。

有 n(3≤n≤100)個柵欄柱子分別位於農場的二維平面上不同的點 (x1,y1)…(xn,yn)。他可以選擇其中三個點組成三角形牧場,只要三角形有一條邊與 x 軸平行,且有另一條邊與 y 軸平行。

farmer john 可以圍成的牧場的最大面積是多少?保證存在至少乙個合法的三角形牧場。

輸入格式(檔名:********s.in):

輸入的第一行包含整數 n。以下 n 行每行包含兩個整數 xi 和 yi,均在範圍 −104…104 之內,描述乙個柵欄柱子的位置。

輸出格式(檔名:********s.out):

由於面積不一定為整數,輸出柵欄柱子可以圍成的合法三角形的最大面積的兩倍。

1,我自己不是很擅長做這種幾何型別題目,所以最先想到的是要把給出座標能夠組成的三角形全部都求出來,再乙個乙個遍歷是否能夠組成題目中規定的三角形,但是由於**水平不夠,只好另外想辦法。

2,我現在用的方法是遍歷給出座標圍成最大三角形方法,python3**如下

for i in

range

(n):

maxx =

0 maxy =

0#這裡先判斷再縱座標相同的情況下他的平行於x軸的一條邊的最大值

for j in

range

(n):

if i != j:

if pointlist[i][1

]== pointlist[j][1

]:# y軸相等的時候

currentmaxx =

abs(pointlist[i][0

]- pointlist[j][0

])maxx =

max(maxx, currentmaxx)

#這裡和上面類似,判斷x軸相同時與y軸平行邊最大值。

for k in

range

(n):

if i != k:

if pointlist[i][0

]== pointlist[k][0

]:currentmaxy =

abs(pointlist[i][1

]- pointlist[k][1

])maxy =

max(maxy, currentmaxy)

求出了從乙個點出發向x,y軸延伸的最大長度,就可以通過maxx * maxy / 2算出三角形的面積,把這些面積放入列表最後輸出列表中最大元素即可。

file_in =

open

('********s.in'

)n =

int(file_in.readline())

pointlist =

for i in

range

(n):

line =

[int

(i)for i in file_in.readline(

).split()]

print

(pointlist)

# possible******** = list(combinations(pointlist,3))

# print(possible********)

eachmax =

# 先找x軸平行最大的長的直線

for i in

range

(n):

maxx =

0 maxy =

0for j in

range

(n):

if i != j:

# print(i,j)

if pointlist[i][1

]== pointlist[j][1

]:# y軸相等的時候

# print('====')

# print(i,j)

currentmaxx =

abs(pointlist[i][0

]- pointlist[j][0

])maxx =

max(maxx, currentmaxx)

for k in

range

(n):

if i != k:

if pointlist[i][0

]== pointlist[k][0

]:currentmaxy =

abs(pointlist[i][1

]- pointlist[k][1

])maxy =

max(maxy, currentmaxy)2)

file_out =

open

('********s.out'

,'w'

)file_out.write(

str(

int(

max(eachmax)*2

)))

大家可以看到一些注釋掉的**就是之前的想法,也就是用排列組合來做。

二月一共多少天

年 月 日 的計算方法是由古代羅馬教皇儒咯 愷撒創立的。他在修改太陽歷時規定每年有12個月,單月31日,雙月30日。這樣一年有366日,要比一年應有的365日多一日,因此必須從哪乙個月裡扣去一日才合適。當時判處死刑的犯人都是在二月份執行處死,人們認為二月份是不吉利的月份,就從二月份中減去了一日,這樣...

2011 2, 二月彈指一揮間

1 開始發奮研究國學了。讓自己打下國學的根基。四書五經已經全部的拿到手了,還有加上從前的好多。從國學上面來說,已經完全夠了。剩下的就是在這一年中該如何把手頭的這麼多的國學書籍學習 總結,研究透徹。讀過如此多的國學書籍後,那麼自然的就會解決很多的人生問題,比如立志 做人等等。有了國學的根基後,再去做很...

每天學習一點點(2023年二月)

2010 2 8號 星期一 1.決定記錄下每天學到的東西和感悟 3.看到乙個笑話 你屬什麼?我屬 於你。2010 2 9號 星期二2.如何更改vs2008的類和頁面的模板 1 找到c program files microsoft visual studio 9.0 common7 ide item...