考状态的dp

我的方法可能比较奇怪

设f[i,j]表示第i个月解决j个问题可以最多解决到第几个问题

容易知道,答案(月份)不会超过2n+1;

f[i,j]=max(f[i-1,k]+j)

复杂度为O(n^3)

代码如下

 var f:array[..,..] of longint;
    b,a,sa,sb:array[..] of longint;
    p,y,q,i,j,k,n,m:longint;
function max(a,b:longint):longint;
  begin
    if a>b then exit(a) else exit(b);
  end; begin
  readln(m,n);
  for i:= to n do
  begin
    readln(b[i],a[i]);
    sa[i]:=sa[i-]+a[i];
    sb[i]:=sb[i-]+b[i];
  end;
  f[,]:=;
  i:=;
  while i<=*n+ do
  begin
    inc(i);
    f[i,]:=f[i-,];
    for j:= to n do
    begin
      if f[i-,j]= then break;
      f[i,]:=max(f[i,],f[i-,j]);
    end;
    for j:= to n do
    begin
      for k:= to n do
      begin
        if (f[i-,k]=) and (k<>) then break;    //后面的状态不存在,直接退
        p:=f[i-,k];
        q:=f[i-,k]+j;
        if q>n then continue;
        y:=f[i-,k]-k;
        if (sb[q]-sb[p]+sa[p]-sa[y]<=m) and (sa[q]-sa[p]<=m) then          //判断是否够这个月花的
          f[i,j]:=max(f[i,j],f[i-,k]+j);
      end;
      if f[i,j]>=n then
      begin
        writeln(i+);    //注意付完款一定是下个月
        halt;
      end;
      if f[i,j]= then break;
    end;
  end;
end.

话说代码有的地方可能写的比较冗杂……

poj3265的更多相关文章

随机推荐

  1. MongoDB之【增加用户认证、增加用户、删除用户、修改用户密码、读写权限、只读权限】

    说明:增加用户是针对数据库进行操作 1.进入到数据库 use dbname 2.针对当前数据库添加用户 权限是针对当前数据 1.添加并验证用户 > use admin > db.addUs ...

  2. php取整的几种方法

    php取整的几种方式. floor 舍去法取整 语法格式:float floor ( float value )返回不大于value 的下一个整数,将value 的小数部分舍去取整.floor() 返 ...

  3. 一个不错的图片滑动展示插件 anythingslider

    一个不错的图片http://css-tricks.com/anythingslider-jquery-plugin/ DEMO演示: http://css-tricks.github.io/Anyth ...

  4. Cocos2d-x第一个坑,NDK 编译环境

    这些天搭建windows cocos2d-x的环境,基本上崩溃到死.目前好转.终于可以编译通过: 生成模板工程:在cmd下进入cocos2d-x的主目录,D:\Android\cocos2d-x-2. ...

  5. Beaglebone Back学习四(GPIO实验)

    GPIO Beaglebone Back开发板引出了92个引脚,其中只有65个GPIO口可通过配置使用,由于引脚具有“复用”的特性,大约每个引脚有8种工作模式(Beagle System Refere ...

  6. http中的KeepAlive

    为什么要使用KeepAlive? 终极的原因就是需要加快客户端和服务端的访问请求速度.KeepAlive就是浏览器和服务端之间保持长连接,这个连接是可以复用的.当客户端发送一次请求,收到相应以后,第二 ...

  7. 【面试题】Https

    https原理, 我很难一下子记住,   https=http+ssl 先说http,  基于tcp/IP协议 传输,有三次握手 http://blog.csdn*net/xubo_zhang/art ...

  8. 查看某一个点是否在某个多边形内 使用ST_Contains函数

    查看某一个点是否在某个多边形内  使用ST_Contains函数 --LINESTRING ( 121.312350 30.971457 , 121.156783 31.092221 , 121.35 ...

  9. poj 2728 Desert King (最小比例生成树)

    http://poj.org/problem?id=2728 Desert King Time Limit: 3000MS   Memory Limit: 65536K Total Submissio ...

  10. 常用脚本语言Perl,Python,Ruby,Javascript一 Perl,Python,Ruby,Javascript

    常用脚本语言Perl,Python,Ruby,Javascript一 Perl,Python,Ruby,Javascript Javascript现阶段还不适合用来做独立开发,它的天下还是在web应用 ...