+プレフィックスとソート--cf1043E

第二の条件は考慮されません

Iと、すなわち、より小さな差XI-YI jはY、Xおよびその逆から選択され、式を導入することができ、XまたはYを選択し、他のすべてと最小スコアを必要とするが選択され

だから、XI-Yiに応じて並べ替えることができます

そして、ラインを引き、第二の条件を検討

/ * 
XI + YJ <XJ + 1 YIの
XI-YI <XJ-YJの
XI-YI值小取XI 
XIイル值大取YI 
* / 
の#include <ビット/ STDC ++ H>
 使用 名前空間STDを、
#defineっ長い長 
 の#define N 300005
 構造体ノード{ 
    LLのX、Y、ID。
} P [N]、Q [N]。
INTのN、M。
LL ANS [N]、[N] SUMX、スミ[N]。
INT CMP(ノードA、ノードB){ 戻り AX-AY <bx- によって;}
 int型のmain(){ 
    CIN >> N >> M。
    以下のためにint型 i = 1 ; iは++; iが= N < 
        (scanf関数を"%LLD%LLD "、&​​P [i]は.X、&P [I] .Y)、P [i]は.ID = 私は、
     のためにint型 I = 1を iが<= N; iが++)Q [I] = P [i]は、
        
    ソート(P + 1、P + 1 + N、CMP)
     するためのint型 i = 1 ; iが<= N; iが++ ){ 
        SUMX [I] = SUMX [I- 1 ] + P [I]。 X; 
        スミ[I] =スミ[I- 1 ] + P [i]の.Y; 
    } 
    ためのint型 i = 1 ; iが<= N; iが++ ){ 
        ANS [P [I] .ID] + =(I - 1)* P [i]は.Y。
        ANS [P [I] .ID] + = SUMX [I- 1 ]。
        ANS [P [I] .ID] + =(NI)* P [i]は.X。
        ANS [P [I] .ID] + =スミ[N] - スミ[I]。
    } 
    
    ながら(M-- ){
         int型V、Uと、
        scanf関数(" %d個の%d個"、&​​U&V); 
        ノードA = Q [U]、B = Q [V]。
        LL和 =分(a.x +によって、a.y + b.x)。
        ANS [U] - = 合計を、
        ANS [V] - = 合計。
    } 
    のためのINT I = 1私は++; iが<= N 
        COUT [I] << << ANS "  " 
}

 

おすすめ

転載: www.cnblogs.com/zsben991126/p/11441649.html