考状态的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. Kakfa揭秘 Day9 KafkaReceiver源码解析

    Kakfa揭秘 Day9 KafkaReceiver源码解析 上一节课中,谈了Direct的方式来访问kafka的Broker,今天主要来谈一下,另一种方式,也就是KafkaReceiver. 初始化 ...

  2. spark向量

    转自 1.本地向量MLlib的本地向量主要分为两种,DenseVector和SparseVector,顾名思义,前者是用来保存稠密向量,后者是用来保存稀疏向量,其创建方式主要有一下三种(三种方式均创建 ...

  3. 【转】FTP自动上传文件的perl脚本以及配置文件

    这个perl文件将执行的任务是, 按照指定的文件夹目录,自动将该文件夹下的所有文件上传到指定ftp站点的指定目录下 本应用程序设计的几个基本理念是:工具箱再利用:尽可能利用已有的工具:简化运行步骤:不 ...

  4. 2014年辛星完全解读Javascript第三节

    经过第一节的入门和第二节的运算符,那么接下来我们就可以学习Javascript的函数了,当然了,不管大家之前学习的是什么编程语言,都会有函数的概念,如果大家学的是Pascal,还会有”过程“的概念,但 ...

  5. android.support.v4.widget.DrawerLayout使用

    activity_main.xml布局如下: <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas ...

  6. 八、mysql视图、存储过程、函数以及时间调度器

    .create or replace view emp_view as select * from t4 ;给t4表创建一个名为emp_view的视图 .drop view emp_view 删除视图 ...

  7. 【CSS】盒模型+选择器(你选择的要操作的对象)

    盒模型 转http://www.cnblogs.com/cchyao/archive/2010/07/12/1775846.html 1.w3c标准的盒模型和ie的盒模型主要差别在于content的w ...

  8. 【学习总结】Info.plist和pch文件的作用

      Info.plist   建立一个工程后,会在Supporting files文件夹下看到一个“Info.plist”的文件,该文件对工程做一些运行期的配置,非常重要,不能删除 项目中其他Plis ...

  9. python学习笔记11(函数二): 参数的传递、变量的作用域

    一.函数形参和实参的区别 形参全称是形式参数,在用def关键字定义函数时函数名后面括号里的变量称作为形式参数. 实参全称为实际参数,在调用函数时提供的值或者变量称作为实际参数. >>> ...

  10. 团体程序设计天梯赛-练习集L1-024. 后天

    L1-024. 后天 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 如果今天是星期三,后天就是星期五:如果今天是星期六,后天就 ...