最後に、あなたは私を引っ張って見ることができます
T1、各矩形は長さと幅を有し、省略することができるように分{M長い長方形*分{}}最大幅
$、Bの$ソート、それぞれ$を見つけるには、$小さく削除B、そしてサンプルが大きすぎることができない一方、t1は、偽の欲と呼ばれます
実際には、ハンドタッチのセットがオーバーすることはできません
3 1
6 5
1 10000
1 10000
私の貪欲によると11万(小1)、実際には、より良い65を削除し、削除
だから、非常に神経質でなく、偽の貪欲と呼ばれる、最小$デルタ$を見つけるたびに、
その後、大規模なサンプルではなく、あまりにも...
モンゴルの小さな崩壊した後、何気なく果たした二つの基本的な貪欲貪欲ポリシーがアップしています
サンプルは、その後、まだ大きすぎるではありません
これは、その後、戻りたいことは貪欲です
次に投げました
実際には、そのようなああ、のような汎用性と貪欲とt1のt2の前に、彼は当然、オーバー移行しませんでした
1サイクルの最小値を削除列挙するためにどのくらいの期間、残りの小さな幅を削除
そのような欲が正しいことを確認する必要があり、これは、$の最適化をクリックして、$ nの^ 2 $であるN *ログ(N)$(ヒープの会長ツリーの最適化、バイナリの最適化、最適化を、様々な最適化することができますあまりにも)
ハ私は時に受験を考えていたのか分かりません
私は吸盤ああです
#include <ビット/ STDC ++ H> 使用して 名前空間STDを、 #defineは長い長いっ #defineする 111111 LL Tを、N、M。 LL VIS [A]。 構造体ノード{ A、B、ID LL。 ノード(){} ノード(CONST LL&X、CONST、LL&Y CONST LL&Z){A = X、B = Y、ID = Z;} フレンドブール 演算子 <(constのノード&X、CONSTノード&Y){ 戻り XA < YA; } } P1 [A]。 構造体NODE2 { LLのB。 NODE2(){} NODE2(CONST LL&Y){B = Y;} フレンドブール 演算子 <(CONST NODE2&X、CONST NODE2&y)は{ 返す XB> YB。 } }。 PRIORITY_QUEUE <ノード2> Q; INT メイン(){ // freopenは( "d2.in"、 "R"、STDIN)。 // freopenは( "zj.out"、 "W"、STDOUT)。 scanf関数(" %のLLD "、&T)。 一方、(T-- ){ scanf関数(" %のLLDの%のLLD "、同時に(q.size())q.pop(); 以下のために(LL i = 1 ; iが<= N; iは++ ){ LLのX、Y。 scanf関数(" %のLLDの%のLLD "、およびX&Y)。 P1は[I] = ノード(X、Y、I)。 } ソート(P1 + 1、P1は+ N + 1 )。 以下のために(LL iがM + = 1 ; iが++; iが<= N ) q.push(NODE2(P1 [i]は.B))。 LL MAXX = 0 。 用(; I> = 11、I = mを0 ; i-- ){ // printf( "P1 [I + 1] .A =%LLD q.top()=%のLLDを\ n"、P1 [I + 1] .A、q.top()B。)。 MAXX = MAX(P1 [I + 1 ] .A * q.top()B、MAXX。)。 q.push(NODE2(P1 [i]は.B))。 q.pop(); // もし(P1 [i]が.B <q.top()B。)続けます。// 一定被删 // 他q.pop()、q.push(ノード2(P1 [i]を.B)); } のprintf(" %LLDする\ n " 、MAXX)。 } }