社区讨论

向大神求助一下 QAQ

P3139[USACO16FEB] Milk Pails S参与者 4已保存回复 9

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
9 条
当前快照
1 份
快照标识符
@mi4eeyux
此快照首次捕获于
2025/11/18 17:56
4 个月前
此快照最后确认于
2025/11/18 17:56
4 个月前
查看原帖
T_T 我的程序哪里错了啊 哪位大神帮我看看呗 在下不生感激!!!
CPP
var x,y,k,m,i,j,l,r:longint;
    q:array[0..5000000,1..2]of longint;
    f:array[0..10000]of boolean;
function min(x,y:longint):longint;
begin
if x<y then exit(x) else exit(y);
end;
begin
read(x,y,k,m);
l:=1;r:=1;
q[1][1]:=0;q[1][2]:=0;
while l<=k+1 do
    begin
      inc(r);
      q[r][1]:=x;q[r][2]:=q[l][2];
      f[q[r][1]+q[r][2]]:=true;
      inc(r);
      q[r][1]:=q[l][1];q[r][2]:=y;
      f[q[r][1]+q[r][2]]:=true;
      inc(r);
      q[r][1]:=0;q[r][2]:=q[l][2];
      f[q[r][1]+q[r][2]]:=true;
      inc(r);
      q[r][1]:=q[l][1];q[r][2]:=0;
      f[q[r][1]+q[r][2]]:=true;
      inc(r);
      q[r][1]:=min(q[l][1]+q[l][2],x);
      q[r][2]:=q[l][2]-(q[r][1]-q[l][1]);
      f[q[r][1]+q[r][2]]:=true;
      inc(r);
      q[r][2]:=min(q[l][2]+q[l][1],y);
      q[r][1]:=q[l][1]-(q[r][2]-q[l][2]);
      inc(l);
    end;
for i:=0 to 100 do
    begin
      if m+i<=100 then
         if f[m+i] then begin write(i); exit; end;
      if m-i>=0 then
         if f[m-i] then begin write(i); exit; end;
    end;
end.

回复

9 条回复,欢迎继续交流。

正在加载回复...