【01背包】可怜的波特

题目:可怜的波特 rqnoj198

题目描述

哈里波特在姨夫家遭受非人待遇,他被迫做很多事。有一次,姨夫有给了他一大堆家务。哈里知道每件做完家务的时间,重要程度,还知道总时间与任务总数,他必须尽量合理的安排使他在规定时间内完成的重要程度最大。

输入格式

第一行,t,m(t,m<=10000)表示哈里波特的时间和姨夫要他做的家务数。
接下来m行,每行2个值表示该任务所须的时间与重要度(均小于5000)。

输出格式

一行di表示完成的任务重要数总和。

样例输入

样例输出

 

这道题和RQNOJ15一模一样,只是换了一个背景换了一种说法,数据规模大了点,其他一点没变 http://www.cnblogs.com/oijzh/archive/2012/08/19/2646072.html

Pascal Code

program rqnoj198;

var
  n,m:longint;
  t,p:array[0..10000+10] of longint;
  f:array[0..10000+10] of longint;

procedure init;
begin
  assign(input,'rqnoj198.in');
  assign(output,'rqnoj198.out');
  reset(input);
  rewrite(output);
end;
procedure outit;
begin
  close(input);
  close(output);
  halt;
end;

procedure readdata;
var
  i:longint;
begin
  read(n,m);
  for i:=1 to m do
    read(t[i],p[i]);
end;

procedure main;
var
  i,j:longint;
begin
  for i:=1 to m do
    for j:=n downto t[i] do
    begin
      if f[j]<f[j-t[i]]+p[i] then
      begin
        f[j]:=f[j-t[i]]+p[i];
      end;
    end;
  writeln(f[n]);
end;


begin
  init;
  readdata;
  main;
  outit;
end.

 

 

posted @ 2012-08-19 08:04  jiangzh  阅读(270)  评论(0)    收藏  举报