[Bzoj1071]チーム

$ああ+ Bvは<= C +必要表題 Aminh + Bminvの$、 それは$を必要とする、すなわち、列挙ミンのMINV両方の場合ミン\ルH $、$ MINV \ルのV $ と$ S \ルC + Aminh + Bminvを$
大列挙ミンに小さな、そして答えはプリ列挙MINV時間の両方のために、すべての法的-v秒の法的正当なものとして理解することができます

1つの#include <ビット/ STDC ++ H>
 2  使用して 名前空間STDを、
3  int型N、L、R、S、ANS、A、B、C。
4  構造体JI {
 5      int型のH、V、S。
6 } [ 100005 ]、B [ 100005 ]。
7  ブールCMP1(JI X、JIのY){
 8      戻り XH < YH。
9  }
 10  ブールCMP2(JI X、JIのY){
 11の     リターン XS < YS。
12  }
 13  int型のmain(){
 14      のscanf(" %D%D%D%D"&N、&A、&B、& C)、
 15      のためには、int型 I = 1 iが<= N; iが++ ){
 16          のscanf(" %d個の%のD 、および[I]・H、・[I]を。 V);
 17          [I] .S = [I]・H * A + [I] .V * B、
 18件の          B [I] = [I]
 19      }
 20      ソート(A + 1、A +をN + 1 、CMP1);
 21      ソート(B + 1、B + N + 1 、CMP2);
 22      のためのint型 i = 1 ; iが<= N; iが++ ){
 23         INT M1 = A [i]の.V、M2 = [I]・V + C / B。
24          L = R = S = 0 25          のためにINT J = 1 ; J <= nであり、j ++ ){
 26              ながら((R <N)&&(B [R + 1 ] .sA * [J] .hB * [I] .V <= C ))
 27                  であれば((M1 <= bの[++ R] .V)&&(B [R] .V <= M2))S ++ 28              一方((L <N)&&([+ L 1・H <] [J]・H))
 29                  であれば((M1 <= [+ +1] .V)&&([L] .V <= M2))S-で30の              ANS = MAX(ANS、S)。
31          }
 32      }
 33     printf(" %dの" 、ANS)。
34 }
コードの表示

 

おすすめ

転載: www.cnblogs.com/PYWBKTDA/p/11792569.html