1 条题解

  • 0
    @ 2025-2-14 21:20:41

    Pascal :

    program well;
    const
         maxd=125;
         maxh=4010;
    var
         d,g:integer;
         t,f,h:array[1..100]of integer;
         a :array[0..maxd,1..maxh]of boolean;
    
    procedure swap(var a,b:integer);
      var c:integer;
      begin
         c:=a;a:=b;b:=c;
      end;
    
    procedure init;
      var k,i,j:integer;
      begin
         readln(d,g);
         for k:=1 to g do readln(t[k],f[k],h[k]);
         for i:=1 to g-1 do
           for j:=i+1 to g do
             if t[i]>t[j] then
             begin
                swap(t[i],t[j]);
                swap(f[i],f[j]);
                swap(h[i],h[j]);
             end;
      end;
    
    procedure main;
    var
       k,i,j,mh:integer;
    begin
         mh:=0;
         for i:=1 to g do if t[i]>mh then mh:=t[i];
         inc(mh,10);
         for i:=1 to g do inc(mh,f[i]);
         fillchar(a,sizeof(a),0);
         a[0,10]:=true;
         for k:=1 to g do
          for i:=d-1 downto 0 do
           for j:=mh downto t[k] do
            if a[i,j] then
            begin
                        a[i+h[k]][j]:=true;
                        if (i+h[k]>=d) then
                           begin
                                writeln(t[k]);
                                exit;
                           end;
                        a[i][j+f[k]]:=true;
            end;
         for j:=mh downto 1 do if a[0,j] then
          begin writeln(j); exit end;
    end;
    
    begin
    {assign(input,'well.in');
         reset(input);
         assign(output,'well.out');
     rewrite(output);}
         init;
         main;
    {close(input);
     close(output);}
    end.
    
    
    • 1

    信息

    ID
    820
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者