首页 > 其他分享 >POJ 2184(01背包+滚动数组)

POJ 2184(01背包+滚动数组)

时间:2022-10-25 12:37:26浏览次数:56  
标签:01 2184 maxv ts longint POJ ans np minv


01背包 模板题


Program dd;
const
maxn=1000;
maxv=100000;
minv=-100000;
NULL=-2139062144;
var
n,i,j,ans,p,np:longint;
ts,tf:array[1..maxn] of longint;
f:array[0..1,minv..maxv] of longint;
function max(a,b:longint):longint;
begin
if a<b then exit(b) else exit(a);
end;
begin
read(n);
for i:=1 to n do read(ts[i],tf[i]);
fillchar(f,sizeof(f),128);
f[0,0]:=0;
for i:=1 to n do
begin
p:=i mod 2;
fillchar(f[p],sizeof(f[p]),128);
np:=(p+1) mod 2;

for j:=maxv downto minv do
begin
f[p,j]:=f[np,j];
if (minv<=j-ts[i]) and (j-ts[i]<=maxv) then
if (f[np,j-ts[i]]<>NULL) then
f[p,j]:=max(f[p,j],f[np,j-ts[i]]+tf[i]);



end;
end;


ans:=0;
for i:=0 to maxv do
if (f[n mod 2,i]>=0) and (ans<f[n mod 2,i]+i) then ans:=f[n mod 2,i]+i;

writeln(ans);

end.



标签:01,2184,maxv,ts,longint,POJ,ans,np,minv
From: https://blog.51cto.com/u_15724837/5794476

相关文章

  • POJ 1950(不打表做法)
    这题就是搜……注意设定maxn要不然肯定爆maxn=1*10^最大位数/21234..89-11121314这样的Programaa;constmaxn=1000000000000000;varn,t:longint;a:array[1..15]......
  • POJ 3256(SPFA)
    这题只能对每一个点查一遍……有向图的话能用floyd,可是迫于时限用了SPFA。Programaa;constmaxk=10000;maxn=10000;maxm=10000;vark,n,m,i,j,l:longint;a:ar......
  • POJ 2110(最小生成树)
    这题的思路就是找一个范围,看看这个范围是否可行主流是二分Ans,我是先把点排序,求最小生成树检查首位的ProgramP2110;typeed=recordu,v,w:longint;end;vara......
  • POJ 1951(空串特判)
    这题的教训是要特判空串ProgramP1951;vars:string;len,i,j:longint;b:array[0..10000]ofboolean;functionisdight(x:longint):boolean;beginif(x>=65)an......
  • POJ 1952(最长不下降子序列的个数)
    求一个序列的最长不下降子序列的长度,与个数(相同数列算1个)关键是如何判重。显然如果之前有一个尾数相同且长度相同的序列,哪么后一个包含前一个所有可能的序列相同的序列,故将......
  • POJ 2588(解析几何+并查集)
    题目就是早从左到右的路注意输入的实数这题图画好就行,别像我一开始把图弄反就成从上开始找,若找到一个与下边界相邻的就无解,找到与左边相邻的记圆与左边界相交的下边的点(相当......
  • POJ 3844(同余)
    果断同余……D[j]-D[i] mod k=0D[j]=D[i]求有多少相等数对,用队列O(n)ProgramP3844;constmaxn=50000;maxd=1000000;varans,t,f,n,i,j:longint;d:array[0........
  • POJ 3122(二分答案)
    二分答案……Programpie;constlef=0.00001;vart,n,f,i,j:longint;r:array[1..10000]oflongint;s:array[1..10000]ofdouble;maxs:double;procedures......
  • POJ 3842(质数判断)
    7!=5040所以这题直接求质数比打一千万的表都快这提高诉我们阶乘其实不算大&看(算)清数据规模Programcc;varn,t,len,i,j,ans:longint;s:string;b:array[0..9]oflong......
  • POJ 1125(Floyd)
    裸FloydProgramP1125;constmaxn=100;maxedge=10;NULL=-2139062144;varn,i,j,k,m,v,t,ans:longint;f:array[1..maxn,1..maxn]oflongint;functionmax(a,b:......