POJ3067:日本(フェンウィックツリーが逆転しようとしています)

説明

日本はACM ICPC世界大会を歓迎する計画で、道路の多くは、会場のために構築されなければなりません。日本は東海岸のNの都市と西海岸のMの都市(M <= 1000、N <= 1000)と背の高い島です。Kのスーパーハイウェイは、ビルドされます。各沿岸の都市は1、2、...北から南に番号が付けられています。各高速道路は直線であると西海岸の都市で東海岸に都市を接続しています。建設のための資金はACMによって保証されています。和の大部分はスーパーハイウェイの間の交差の数によって決定されます。最大2つのスーパーハイウェイは、一箇所で交差します。スーパーハイウェイ間の交差の数を計算するプログラムを書きます。
入力

入力ファイルはTで始まる-テストケースの数を。各テストケースは、3つの数字で始まる-高速道路で接続された都市の数- N、M、Kは、次のK線の各々は、2つの数値を含んでいます。最初のものは東海岸の都市の数であり、2つ目は、西海岸の都市の数です。
出力

各テストケースのための標準的な出力に一行書き込み 
テストケース(ケース番号):(交差数)
サンプル入力を

1つの
3 4 4
1 4
2 3
3 2
3 1
サンプル出力

テストケース1:5
ソース

南東ヨーロッパ2006

 

問題の意味は:
両側に、それぞれ、N、M点は、点の位置2,3の両側に上から下に番号が付け。
Kエッジコネクタの両側のポイントがある、二つのエッジの唯一最大の交差点の総数を求め、三辺上の点で交差し、状況が表示されていない一点で交わります

アイデア:
ケースは必ずしも李<例Ljでは、R> Rjとで交差さ
Lた後、Rの順序は、ちょうど逆の順番にRでどのように多くの数字を見て

する#include <stdio.hに> 
する#include <アルゴリズム> 
の#include <iostreamの> 
する#include <STDLIB.H> 
の#include < ストリング > 
の#include < 文字列・H> 
の#include <math.h>の
書式#include <ベクトル> 
の#include <キュー> 
の#include <スタック> 
の#include <マップ> 
書式#include < 設定 > の#define INF 0x3f3f3f3f
 の#defineは長い長いLL
 使って名前空間はstdを、
const int型   MAXN = 1E6 + 5 


  


ノード{
     int型のL。
    int型のR; 

}。

【MAXN]ノード。
INT [MAXN] B。
INT [MAXN] C。
INT T、N、M、K。

ブールCMP(ノード、ノードB)
{ 
    場合(AL =!BL)
         を返すらを< BL。
    他に
        返す AR < BR。
} 

INT lowbit(INT X)
{ 
    戻り X&( - X)。
} 

ボイドアップデータ(INT P)
{ 
    一方(p <= M) 
    {
        C [P] + =1 ; 
        P + = lowbit(P)。
    } 
} 


int型 getsum(INT P)
{ 
    int型 RES = 0 一方、(P)
    { 
        RESは + = C [P]。
        P - = lowbit(P)。
    } 
    戻りRESと、
} 




int型のmain()
{ 
    // freopenは( "../ in.txt"、 "R"、STDIN)。
    scanf関数(" %のD "、&T)。
    int型、T = 1 ;
    しばらく(T-- 
    { 
        scanf関数(" %D%D%D "、&​​N、&M、&K)。
        memset(C、0はsizeof (c)参照)。
        以下のためにint型 i = 1 ; iは= Kを<I ++の
        { 
            scanf関数(" %d個の%のD "、および[I] .L、&[I] .R)。
        } 
        ソート(A + 1、A + 1 + K、CMP)。
        LL ANS = 0 以下のためにint型 i = 1 ; iは= Kを<; iは++ 
        {
            アップデータ([I] .R)。
            ANS + = I- getsum([I] .R)。
        } 
        のprintf(" テストケース%のD:%LLDする\ n "、T ++ 、ANS)。
    } 
    戻り 0 
}

 

おすすめ

転載: www.cnblogs.com/-Ackerman/p/11267231.html