暴力の最初はうまくやってますが、最適化を持っていないでしょう。QWQをあきらめます。
練習1:二分答え
その後、平均は$ AVE = \ FRAC {合計} {LEN} $であることが判明し、このフォームは半分答えをのようですか?$左に$をlenの。
このように二分$ $アベニューは、列の数を見つけ、$ lenのアヴェ$ $ $を乗じよりも大きく、その後、スタックに等しい一切の間隔はありません。。
そこは非常に巧妙な変換は、各番号マイナス$ aveとの$、その後、任意の間隔に、あるとAVE $は$ LEN $時間を蓄積$と等価です。
間隔は、ちょうどそれが0以上であるかどうか* AVE $を見て、$ S-LEN以来。
大きくても小さくてもできる$ aveの$を説明するためのセクションがあります。存在を探すのは簡単プレフィックスとDPです。
$ O(nlogn)$。
POJ精度カードは、過去に生と死ではありません。
スキルが十分ではないようです。
そして、怒って長い長いすべてダブルワイドタイプを置き換えるために、それは、算術、その後、すべての5つの10進整数として、ある、そして最終的には100で割った値。
ああ。
1の#include <iostreamの> 2の#include <cstdioを> 3の#include <CStringの> 4の#include <アルゴリズム> 5の#include <cmath> 6 の#define DBG(X)CERR << #X << "=" << X <<てendl 7 使って 名前空間はstdを、 8 typedefの長い 長いLL。 9 typedefをダブルデシベル。 10のtypedef対< INT、INT > PII。 11テンプレート<型名T>インラインT _min(TA、TB){ 戻り A <Bを?:B;} 12テンプレート<型名T>インラインT _max(TA、TB){ 戻り A> B?:B;} 13テンプレート<型名T>インラインチャー MIN(T&A、TB){ 戻り A> B(A = B、?1):0 ;} 14テンプレート<型名T>インラインチャー MAX(T&A、TB) { 戻り <Bを(A = B、?1):0 ;} 15テンプレート<型名T>インラインボイド _swap(T&A、T&B){A ^ = B ^ = A ^ = B;} 16テンプレート<型名T>インラインTリード(T&X){ 17 、X = 0。int型の F = 0 ;char型の C; しばらく(isdigit(C = getchar関数())!)の場合(C == ' - ')は、f = 1 ; 18 一方(isdigit(c)参照)、X = X * 10 +(C&15)、C = GETCHAR()。返す fはX = - ?X:X; 19 } 20 のconst int型 N = 1E5 + 7 。 21の CONST DB EPS = 1E- 7 。 22 LL A [N]、S [N]。 23 LLのL = 1 、R、ミッド。 24 int型N、L。 25インラインブールチェック(LL AVE){ 26 のために(登録をint = I 1を、iは<L; ++ I)S [I] = sの[I- 1 ] + [I] - AVE。 27 LLミンクス= 1E16。 28 のために(登録をint i = 1; iは= N <; ++ I){ 29 MIN(ミンクスは、S [IL]); S [I] = sの[I- 1 ] + [I] - AVE。 30 であれば(S [i]は-minx> = 0)リターン 1 。 31 } 32 リターン 0 。 33 } 34 35 INTメイン(){ // freopenは( "test.in"、 "R"、STDIN)。// freopenは( "test.outに"、 "W"、STDOUT)。 36 リード(N)、(l)を読み出します。 37 のために(登録をint i = 1 A [i]を読み出す=(A [I])* I ++; iが<= N)100000 ([I] R、A)、MAX。 38 一方(L < R){ 39 半ば= L + R + 1 >> 1 。 40 であれば(チェック(MID))L = ミッド。 41 他 R =半ば1 。 42 } 43 のprintf(" %のLLD "、(L / 100 ))。 44 リターン 0 ; 45 }