POJ - 2976の落下テスト(01点が予定)

そして最後に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(01)* 100 )。
30      }
 31      リターン 0 32 }

 

おすすめ

転載: www.cnblogs.com/asdfsag/p/11826653.html