計蒜客 I小灰灰的籠外領地(計算多邊形面積)

2021-09-25 15:21:29 字數 1312 閱讀 7026

小灰灰的籠外領地

【題目描述】

小灰灰在某天吃飽喝足後爬出了自己的籠子出來做運動。小灰灰作為實驗室的明星鼠,大家當然不能讓它去一些危險的地方,因此春陽哥就在小灰灰籠前的平地上按照順時針順序點了幾個點,並用線將其順時針連線了起來。醬,小灰灰就擁有了乙個屬於自己的安全的「籠外領地」啦!

小灰灰在領地中逛久了自然感覺無趣,因此,它想要做一些有挑戰的事情——寫個程式算出來它的領地究竟有多大!然而,小灰灰實在是太小了,甚至連鍵盤的鍵都按不下去,所以它只好來請你幫助他完成這個任務咯!

【輸入描述】

第一行乙個整數t,表示有t(1<=t<=20)組資料。

對於每組資料:

第一行兩個整數n ( 1 ≤ n≤10,000),表示春陽哥點了n個點。

接下來n行,每行兩個實數x,y ( |x|,|y| ≤ 1,000),表示點的橫縱座標。

點以順時針順序給出,輸入資料保證圖形為多邊形。

【輸出描述】

對於每組資料,輸出乙個實數,表示小灰灰的領地面積。

輸出保留兩位小數。

樣例輸入

1

31 1

1 22 2

樣例輸出

0.50
code:

#include#includeusing namespace std;

double ans;

int n;

struct point

a[1000005];

int main()

ans=0;

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

ans+=(double)(a[i].x*a[i-1].y-a[i].y*a[i-1].x)/2.0;

ans+=(double)(a[1].x*a[n].y-a[1].y*a[n].x)/2.0;

if(ans<0.0)

ans=-ans;

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

}return 0;

}

公式:

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

ans+=(double)(a[i].x a[i-1].y-a[i].y a[i-1].x)/2.0;

ans+=(double)(a[1].xa[n].y-a[1].ya[n].x)/2.0;

計蒜客 小 B 的題目

小 b 給小 a 出了這樣一道題 給定乙個長為 nn 的序列 aa 和乙個長為 mm 的序列 bb,在 aa 和 bb 中各取乙個數相加,可以得到 n times mn m 個數,他想知道把這些數從小到大排序,第 kk 個數是多少 下標從 11 開始 小 a 不會做,他想讓你幫他解決這個問題。第一行...

計蒜客 小z的合影

題目描述 現在,請幫助小z和更多的小朋友合影。輸入描述 輸入包含多組資料。每組資料的第一行有兩個整數n和k,1 n 10000,1 k 10000,表示有n個小朋友,小z手裡有k個氣球。下面有n行,每行兩個整數ai和bi,1 ai,bi 100000000,表示第i的小朋友有ai個棒棒糖,希望與至少...

計算客444 (2015計蒜之道 京東的物流路徑)

題目鏈結 作為乙個電子商務為主體的公司,京東一直努力實現自己 多 快 好 省 的承諾。其中,快 的特質更是被京東發揮到了極致。京東建立了乙個非常高效的物流網路,物流網路構成了乙個樹結構,由很多的物流點和將物流點鏈結起來的道路組成。京東物流網路中每個物流點有乙個權值 di,物流點間的道路也都有乙個權值...