そして最後に01ポイントのピットを埋めるために計画します。
質問は、あなたは、Mを選択することを可能にする二次元平面上の$ n個のベクトル(a_iを、b_i)$に意図され、その結果、これらのベクトル、すなわち、$ \ FRAC {\和a_iを}の傾き{\和b_i} $れます最小。
$ \すなわちFRAC {\和a_iを} {\和b_i} \ geqslant K $、$ \和a_iを\ geqslant \ kb_i $を合計、すなわち$ \和a_iを-kb_i \ geqslant 0 $、$ a_i-を選択を提供バイナリ勾配、 kb_i $大ベクトルmは0を決定することができるよりも大きくなる前に。
それぞれのほんの一部にPOJとCEを支払わなければなりませんでした...
1の#include <cstdioを> 2の#include <機能> 3の#include <アルゴリズム> 4 使って 名前空間STDを、 5 typedefの長い 長いLL。 6 typedefをダブルデシベル。 7 のconst int型 N = 1000年 + 10、INF = 0x3f3f3f3f 。 8 整数N、K、[N]、B [N]。 9 dBのC [N]。 10 ブールOK(DB X){ 11 = dBの和0 。 12 のための(int型 I =0 ; I <N; ++ I)C [I] = [I] -x * B [i]は、 13 ソート(C、C + N、大きな<DB> ()); 14 のために(INT iは= 0の和+ =; I <K ++ I)C [i]は、 15 リターン和> = 0 。 16 } 17は、 DB BI(dBのL、デシベルR){ 18 のために(INT iは= 0 ; I < 100 ; ++ I){ 19 dBの半ば=(L + R)/ 2 。 20 OK(MID)L =ミッド:R = ミッド。 21 } 22 リターンL。 23 } 24 INT メイン(){ 25 ながら(scanf関数(" %D%D "、&N&K)、n)は{ 26 、K = N - K。 27 のために(INT iが= 0 ; iが<N; ++ I)のscanf(" %dの"、および[I])。 28 のために(INT iが= 0 ; iが<N; ++ I)のscanf(" %dの"、&B [I])。 29 のprintf(" %.0f \ n "、BI(0、1)* 100 )。 30 } 31 リターン 0 。 32 }