51node 4と番号0

https://www.51nod.com/Challenge/Problem.html#problemId=1267

第一の方法:+半分のための2つは:十分にかかわらず複製の理解しました。しかし、これは十分な速さではありません

#include <iostreamの> 
する#include <cstdioを> 
する#include <CStringの> 
する#include <アルゴリズム>
 使用して 名前空間をSTD。
typedefの長い 長いLL。
const  int型 MAXN = 1E3 + 10 
LL [MAXN]。
INT メイン()
{ 
    LL N。
    cinを >> N;
    以下のためにINT iが= 0 ; I <N; I ++ 
    { 
        CIN >> [I]。
    } 
    int型 OK = 0 
    ソート(、 +N);
    以下のためにINT iが= 0 ; I <N; I ++ 
    { 
        ためINT J = I + 1、J <N; jは++ 
        { 
            合計ちゃいます。
            LL K = J + 1、M = N- 1 
            
            一方(K < M)
            { 
                合計 = [I] + [J] + [K] + [M]。
                もし(合計< 0 
                { 
                    K ++ 
                } 
                それ以外の 場合(合計> 0
                { 
                    M - 
                } 
                
                { 
                    OK = 1休憩; 
                } 
            } 
            場合(OK)
                 ブレーク
        } 
        であれば(OK)
             ブレーク
    } 
    であれば(OK)
        COUT << " はい" << ENDL。
    他の
        裁判所未満 << " ノー" << てendl; 
}

第二には、足がエミュレートされ、複雑さがnで、私たちはその後、2で割った全20の-2以外に、最大保存するが、二つの分析は重複を防ぐ時分割を追加するには、この構造が記録され、座標れます

#include <iostreamの> 
する#include <CStringの> 
する#include <cstdioを> 
する#include <アルゴリズム>
 使用して 名前空間をSTD。
const  int型 MAXN = 1E3 + 5 int型[MAXN]。
int型のn;
構造体ノード
{ 
    int型X、Yは、Sであり; 
} ST [MAXN * MAXN]。
ブールCMP(ノードA、ノードB)
{ 
    リターン <などBS。
} 
int型のmain()
{ 
    int型のn; 
    cinを >> N;
    以下のためのint型iは= 0、I <N; I ++ 
        CIN >> [I]。
    int型 TOT = 0 ;
    以下のためにINT iが= 0 ; I <N; I ++ 
    { 
        ためINT J = I + 1、J <nであり、j ++ 
        { 
            ST [TOT] .S = [I] + [J]。
            ST [TOT] .X = I; 
            ST [TOT] .Y = J; 
            TOT ++ ; 
        } 
    } 
    ソート(ST、ST + TOT、CMP)。
    int型L = 0、R = tot- 1 INT OK = 0 ;
    ながら(L < R)
    { 
        場合(ST [L] .S + ST [R]は== .S 0 
        { 
            場合(ST [L] .X!= ST [R] .X && ST [L] .Xを!= && .Y ST [R] 
            ST [L] .Y = ST && ST .Y [R] [L] .Y =!ST [R] .X)
            { 
                OK = 1休憩; 
            } 
            そう
                L ++、r--の
        } 
        そう であれば(ST [L] .S + ST [R] .S> 0 
            R- ;
        
            リットル ++ ; 
    } 
    であれば(OK)
        COUT << " はい" << ENDL。
    他の
        裁判所未満 << " ノー" << てendl; 
}

私はタイムアウトを言い渡されたので、これはあまりにも上記、何回か書かれているが、私は(少なくともチェックで同じである)のクロスを何回ありますが、これまで未解決の同じコードを言ってきました。

おすすめ

転載: www.cnblogs.com/liyexin/p/12319643.html