考状态的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. php截取字符串的实例代码(支持utf-8)

    分享下php中截取字符串的例子,支持utf-8格式. 1,截取字符串 <?php $string="2006年4月我又长大了一岁!"; echo substr($string ...

  2. Eclipse查看源码乱码问题

    在同一个工作区下,依赖的Jar包如果既有GBK编码,又有UTF-8编码,就会出现的问题. 常规解决方法 1.切换工作区编码.麻烦,效率低. 2.设置Jar包编码,只有Eclipse4.2支持,4.0以 ...

  3. iOS中为网站添加图标到主屏幕以及增加启动画面

    虽然没有能力开发Native App,但还是可以利用iOS中Safari浏览器的特性小小的折腾一下,做一个伪Web App满足下小小的虚荣心的. 既然是在iOS中的Safari折腾的,那么代码中利用到 ...

  4. 基于SuperSocket实现的WebSocket(后端)

    关于WebSocket其实很早就想发了,奈何之前项目中的WebSocket的后端不是我做的,而我又想前后端都发出来和大家讨论讨论~于是挤出点时间研究了一下WebSocket的后端实现(所以才有了这篇文 ...

  5. 使用eclipse生成文档(javadoc)

    使用eclipse生成文档(javadoc)主要有三种方法:1,在项目列表中按右键,选择Export(导出),然后在Export(导出)对话框中选择java下的javadoc,提交到下一步.在Java ...

  6. centos7安装mplayer以及出现的各种问题

    首先,centos7默认的视频播放器基本不能用,这里我们选择mplayer作为视频播放器. 安装的过程,痛并快乐着....... 首先我们去mplayer的官网下载需要的文件,http://www.m ...

  7. ExtJS4.2学习(12)基于表格的右键菜单(转)

    鸣谢:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-11-24/181.html --------------- ...

  8. [Unity3D]支持的视频格式

    Unity3d只支持 .mov, .mpg, .mpeg, .mp4, .avi, .asf这些格式.

  9. hdu 4652 Dice 概率DP

    思路: dp[i]表示当前在已经投掷出i个不相同/相同这个状态时期望还需要投掷多少次 对于第一种情况有: dp[0] = 1+dp[1] dp[1] = 1+((m-1)*dp[1]+dp[2])/m ...

  10. MySQL 5.6 安装配置

    mysql 5.6.17下载安装图解_百度经验 http://jingyan.baidu.com/article/4b07be3c67853c48b380f311.html windows 8 系统将 ...