問題の意味:NポイントがN個の点の全てと三角形の頂点の領域を決定する平面内にあります。
N <= 3000 Nポイント、[0,10000]の中の値を調整します
アイデアは:の左から右にポイントによって事前ソート
降順原点としてすべて列挙左端点、外積
フォーク領域と積算、原点として、左端の点の各々は、特定の外積は0よりも大きいので
2S = XI * YJ-YI * XJ、xiとyiがなどの長期メンテナンスとXJとYJ接尾辞として、固定されています
1つの#include <ビット/ STDC ++ H> 2 使用して 名前空間STDを、 3 typedefの長い 長いLL。 4符号なしのtypedef int型 のuint ; 5 typedefの符号なしの長い 長いULL。 6のtypedef対< INT、INT > PII。 7のtypedef対<-1,11,11-> PLL。 8 typedefのベクトル< int型 > VI。 9のtypedefベクトル<PII> VII。 10 // のtypedef対<-1,11,11-> P。 11 #define N 100100 12 の#define M 2000010 13 の#define Fiの最初の 14 の#define SE第 15 の#define MPがmake_pair 16 の#define PBの一back 17件 の#defineパイACOSを(-1) 18 の#define MEM(a、b)はmemsetの(A 、bは、はsizeof(A)) 19 の#define担当者が(iは、、B)は(INT I =(INT); iは=(INT)B <; I ++) 20 の#define当たり(I、B)以下のために(INT I =(INT); I> =(INT)B; i--) 21 の#define lowbit(x)は、x&( - X) 22 の#defineランド(RAND()*(1 << 16)+ランド()) 23 #define ID(X)((X)<= B(X):MN /(X)+1) 24 の#define LS P << 1 25 の#define RS P << 1 | 1 26 27 CONST LL MOD = 1E9 + 7、INV2 =(MOD + 1)/ 2 。 28 二重 EPS = 1E- 6 。 29 int型 INF = 1E9; 30 int型 DX [ 4 ] = { - 1、1、0、0 }。 31 のint DY [ 4 ] = { 0、0、 - 1、1 }。 32 33 34 構造体P 35 { 36 LLのX、Y。 37 } P [N]、T [N]。 38 39 INT N。 40 41 LLの演算子 * (P AとPとB) 42 { 43 リターン *によって-AY *斧BX。 44 } 45 46 LLの演算子 < (P AとPとB) 47 { 48 リターン ||によってAY <(AY == && a.x <によってBX)。 49 } 50 51 BOOL CMP(P AとPとB) 52 { 53 リターン *のB> 0 。 54 } 55 56 読み取る11() 57 { 58 LLのV = 0、F = 1 。 59 チャー C = GETCHAR()。 60 一方、(C < 48 || 57 <C){ もし、(C == ' - ')、F = - 1。C = GETCHAR();} 61 ながら(48 <= C && C <= 57)V =(V << 3)+ V + V + C-48、C = GETCHAR()。 62 リターンのV *のF; 63 } 64 65 66 ボイド(解決) 67 { 68 ソート(P + 1、P + N + 1 )。 69 LL ANS = 0 。 70 担当者(I、1、N- 2 ) 71 { 72 のint M = 0 。 73 LL SX = 0、SY = 0 。 74 担当者(J、Iは、+ 1 、N) 75 { 76 M + 。 77 T [M] .X = P [J] .x- P [i]は.X。 78 T [M] .Y = P [J] .y- P [i]の.Y。 79 } 80 ソート(T + 1、T + 1、M + 1 、CMP)。 81 担当者(J、1 、m)の 82 { 83 SX + = T [J] .X。 84 SY + = T [J] .Y。 85 } 86 担当者(J、1 、m)の 87 { 88 SX-= T [J] .X。 89 SY- = T [J] .Y。 90の ANS + = T [J] .Xの*のSY-T [J] .Yの*のSX。 91 } 92 } 93の 場合(ANS%2 == 1)のprintf(" %のlld.5する\ n "、ANS / 2 )。 94 他の printf関数(" %のlld.0の\ nを"、ANS / 2 ); 95 } 96 97 のint main()の 98 { 99 N = (読み取り) 100 担当者(I、1、n)はP [i]は.X = READ()、P [i]は.Y = 読み取ります(); 101 )(解きます。 102 戻り 0 ; 103 }