ミレーOJ TCO予選

実際には、全粒穀物OJゲームの時間は、非常に友好的となっているが少なすぎる、唯一の3つの質問の対象である、と品質は、あなたがたではありません。

トピックへのリンク:https://code.mi.com/contest/list/view?id=13


トークそんなに、答えがk / 2です。

1分48秒カット味方対象......手の速度皇帝ああ。

あまりにも多くの水は、コードを投稿されていません。

B:

この質問は、被写体次のように不備の問題に直面しています:

平面内に整数XOY n個の点が与えられ、点(X1、Y1)の各対は、(X2、Y2)が長方形を決定することができる:矩形の左上の点(MIN(X1、X2)を、MAX(Y1、Y2)) 、長方形の右下隅(MAX(X1、X2)、分(Y1、Y2))。我々は、次に、N×(N-1)/ 2の矩形を得ることができます。

うちランダム異なる長方形、1E9 + 7意義の下で出力答えMOD逆に、カバレッジの期待を尋ねました。

唯一の千ポイント、離散+のO(N ^ 2)統計が逃げるので。

1  / * 基本ヘッダ* / 
2の#include <ビット/ STDC ++。H>
 3  / * 定義* / 
4  の#defineっ長い長い
 5  の#define DOUダブル
 6  の#defineのPb emplace_back
 7  の#define融点make_pair
 8  の#define SOTを(A 、B)、ソート(A + 1、A + 1 + B)
 9  の#define REP1(iは、B)(iは= int型のために、私は= Bを<; ++ i)は、
 10  の#define REP0(I、Aを、B)(iは= int型のために、私は、Bを<; ++ i)は、
 11件 の#define EPS 1E-8
 12  の#define 0x3f3f3f3f int_inf
 13  の#definell_inf 0x7f7f7f7f7f7f7f7f
 14件 の#define LSONのcurpos << 1
 15  の#define rsonのcurpos << 1 | 1
 16  / * 名前空間* / 
17  使って 名前空間はstdを、
18  / * ヘッダの終わり* / 
19  
20  CONST LL MOD = 1E9 + 7 21  のconst  int型 MAXN = 1E3 + 10 22  
23対<-1,11,11-> [MAXN]、[MAXN]をreg。
24  LLのCNT [MAXN] [MAXN]、[MAXN] [MAXN]です。
25ベクター<LL> VX、VY。
26  int型N、M。
27  
28  インラインLL CAL(LX -1,11,11-のLY、LL RX、LLのRY){
 29の     リターン 1LLの*のABS(RX - LX)* ABS(RY - LY)%MOD。
30  }
 31  
32  インラインLLのQP(LLのB、LL){
 33件      のLL RES = 1LL。
34      一方、(B){
 35          であれば(B&1)のRES =のRES *%のMOD。
36          = *%のMOD。
37          B >> = 1 38      }
 39の     リターンRES。
40  }
 41  
42  インラインLLのINV(LL A){
 43     リターン QP(MOD - 2 )。
44  }
 45  
46インラインボイド追加(LL&、CONST LL&B){
 47      + = B。
48      であれば(> = MOD)A - = MOD。
49  }
 50  
51  INT メイン(){
 52      CIN >> N。
53      REP1(I、1 、N){
 54          CIN >> [i]が1次回>> [I] .second。
55          vx.pb([I] 1次回)。vy.pb([I] .second)。
56      }
 57     ソート(vx.begin()、vx.end());
58      ソート(vy.begin()、vy.end());
59      vx.erase(ユニーク(vx.begin()、vx.end())、vx.end())。
60      vy.erase(ユニーク(vy.begin()、vy.end())、vy.end())。
61      REP1(I、1 、N){
 62          REG [i]が1次回= LOWER_BOUND(vx.begin()、vx.end()、[I] 1次回) - vx.begin()。
63          REG [I] .second = LOWER_BOUND(vy.begin()、vy.end()、[I] .second) - vy.begin()。
64      }
 65      のmemset(CNT、0はsizeof (CNT))。
66      REP1(I、1 、N){
 67         REP1(J、I + 1 、N){
 68              INT LX = 分(REG [i]が1次回、REG [j]が1次回)。
69              INT RX = MAX(REG [i]が1次回、REG [j]が1次回)。
70              int型 LY = 分(REG [I] .second、REG [J] .second)。
71              INT RY = MAX(REG [I] .second、REG [J] .second)。
72              CNT [lx]と[LY] ++; CNT [RX] [RY] ++ ;
73              CNT [lx]と[RY] - 。CNT [RX] [LY] - 74          }
 75      }
 76      REP0(I、1、vy.size())を追加する(CNT [ 0 ] [i]は、CNT [ 0 ] [I -1 ])。
77      REP1(I、1 、vx.size()){
 78          アド(CNT [I] [ 0 ]、CNT [I - 1 ] [ 0 ])。
79          REP1(J、1 、vy.size()){
 80              アド(CNT [I]、[J]、CNT [I - 1 ] [J])。
81              追加(CNT [I]、[J]、CNT [I]、[J - 1 ])。
82              追加(CNT [I]、[J]、MOD - CNT [I - 1 ] [J - 1 ])。
83          }
 84      }
 85      LLのFM = N *(N - 1)/ 2、ANS = 0LL。
86      FM = INV(FM×(FM - 1)%のMOD)。
87      REP0(I、0、vx.size() - 1 ){
 88          REP0(j、0、vy.size() - 1 89          であれば(CNT [I] [J]> 1LL){
 90              LL TMP = CAL (VX [I + 1 ]、VYの[jを+ 1 ]、VX [i]は、VY [J])。
91              のANS =(ANS + TMP *(1LL * CNT [I] [J] *(CNT [I]、[J] - 1)%のMOD))%MOD。
92          }
 93      }
 94      のprintf(" %のLLDの\ nを"、ANS *のFM%のMOD)。
95      リターン 0 ;
96 }
コードの表示

C:

胡先生がいなくても神々のタイトル行い、滑っ(

おすすめ

転載: www.cnblogs.com/JHSeng/p/10987266.html