実際には、全粒穀物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:
胡先生がいなくても神々のタイトル行い、滑っ(