$ああ+ 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 }