B.ツアー
タイトル説明
入力形式
出力フォーマット
サンプル
データ範囲とヒント
この質問は、主にチューニングが難しいこの質問泥棒の、わずかなミスがWA意志、そして泥棒よりも多くのテストポイントの問題を解決する、ケースに2つの以上のポイントが存在しますので、私は本当に、時間の比較的長いスパンであります前記署名、コードXの一部にティーバッグ紙コップ、
実際には、この質問はかなりいるようだが、また、思考の量、主なポイントは、分割されたマトリックスの側面を取り、その後、建設側、ポイントに注意を払う必要があることです、つまり、全体の行列は3倍に拡大されます。実際には、全体の問題は、(私は半分を二点ヒットしました、、本当に遅い実行されている方法のために)、とにかく、私は構造を使用していた、私はベンが再生されているか、他の神々がわからない、倍増、と同じ、行列に置き換えられている需要のLCA事実に倍増しかし、細部に注意を払う、夜のためのカード全体は、それがマトリックス質量の参加がアドレスを取るために増加していなかったためで、プラスに、ベンはメッセージを残すだろう、なぜ神は知っています
#include <cstdioを> する#include <CStringの> する#include <cmath> の#include <iostreamの> 使用して 名前空間STD。 #defineは長い長いLL の#define再登録 の#define(iは++; iは= bを<LL iは=)F(iは、、B)のためには、 N、M、U、V、D、T LL。 長い 長いS、K。 ブールフラグ。 インラインLLリード() { LL SSを再 = 0。チャー BB = GETCHAR()。 一方、(BB < 48 || BB> 57)BB = GETCHAR()。 一方、(BB> = 48&& BB <= 57)SS =(SS << 1)+(SS << 3)+(B-B ^ 48)、BB = GETCHAR()。 リターンSS。 } 構造体Martix { LL X [ 250 ] [ 250 ]。 無効INITを() { memsetの(X、0、はsizeof (X)); } } MUL [ 125 ]、TMP。 Martix BG、ベース今、; ボイド(Martix&、Martix&B、Martix&製C) { フラグ = 1 。 tmp.init(); F(I、1、3 * N + 1 ) F(L、1、3 * N + 1 ) { 場合(AX [I] [L]!)続けます。 // デバッグ(I);デバッグ(リットル); F(J、1、3 * N + 1 ) tmp.x [I] [J] = tmp.x [I] [J] + AX [i]は[L] * BX [L] [J]。 もし(Iの== 1 && tmp.x [I] [ 3 * N + 1 ]> = K)フラグ= 0 。 } C = TMP。 } int型のmain() { // freopenは( "cnm.txt"、 "R"、STDIN)。 N =読み取る()、M =(読み取り)、K = 読み取ります(); F(I、1 、N) { bg.x [ 1 ] [I] = 1 。 ベース .X [I] [iがN +] = 1 。 ベース .X [iがN +] [iが+ 2 ×n個] = 1 。 } 一方(M-- ) { Uは読み取り=()、V =読み取る()、D = 読み取ります(); ベース .X [U +(D- 1)* N] [V] ++ ; ベース .X [U +(D- 1)* n]は[ 3* N + 1 ] ++ ; } 基部 .X [ 3 * N + 1 ] [ 3 * N + 1 ] = 1 。 MUL [ 0 ] = 塩基; 用(; T <= 63、T ++ ) { 場合(T) からなる(MUL [T - 1 ]、MUL [T- 1 ]、MUL [T])。 (BG、MUL [T]、今)からなります。 もし(!フラグ|| now.x [ 1 ] [ 3 * N + 1 ]> = K){ 破る;} } T -; もし(T == 63 && now.x [ 1 ] [ 3 * N + 1 ] < K) { プット(" -1 " )。 リターン 0 ; } のための(LL I = tの; I> = 0 ; i-- ) { 作ら(BG、MUL [i]は、今)。 もし(フラグ&& now.x [ 1 ] [ 3 * N + 1 ] < K) { S + =(1LL << I)。 BG = 今; } } のprintf(" %のLLDを\ n "、S + 1 )。 }
endl;