【BZOJ1132] TRO(外積)

問題の意味: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対< INTINT > 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 ] = { - 1100 }。
31        のint DY [ 4 ] = { 00、 - 11 }。
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 = - 1C = 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 }

 

おすすめ

転載: www.cnblogs.com/myx12345/p/11720235.html