zoukankan      html  css  js  c++  java
  • PKU 1036

    http://acm.pku.edu.cn/JudgeOnline/problem?id=1036

    分析:重点在于,状态变化可以有 0 ,-1 ,+1.

    所以t0在 t时间内的状态变化量可以是 [t0-t:t0+t];

    根据时间排序,状态方程

    ans[i]=max(ans[k])+col[i].p;    (0<=k<i,且(col[i].t-col[k].t>=|col[i].s-col[k].s|))

    虽然是很简单的DP

    但是,由于我把数据存在 1——N中。。col [0]各项都设为0.排序的时候要sort(col,col+n+1,comp);多次忘记加1。。囧

    但还是WA ,

    原因很简单,我把ans[i](0 <=i<=n)都初始为0,MAX也初始化为0,在判断某个项是否可取时,发生了错误。

    因而把ans[i]初始化为-1 MAX=0。从而判断某个项是否可取

    或者,只初始化ans[0]=0. MAX初始为-1,如果ans[i]不可取,就等于-1。

    AC 复杂度:O(n^2)

    状态量为p[i].

    状态转移的边界条件为时间(重点)。而且数据比较小。(n<100,)

    明显T<30000不是状态量

    拓展:跟最长单调递增子序列想法基本一致。。。细节方面需要注意

    但是我的比较费时间,,想起最长单调递增子序列有(nlog n)的算法,于是琢磨。

    用b[k]记录长度为K的子序列的最小元素

    这是基于子序列的单调性质的,,然后用二分

    可是这道题。。好像没有单调性质哦。。,

    琢磨不出 希望大牛们赐教!!!!

  • 相关阅读:
    windows 安装mysql 步骤
    x-editable 的使用方法
    asp.net连接数据库
    fedora下根据字符查找软件包
    ubuntu 常用命令
    第8课-库函数方式文件编程
    第7课-系统调用方式文件编程
    第6课-函数库设计
    第5课-Linux编程规范
    第4课-Linux应用程序地址布局
  • 原文地址:https://www.cnblogs.com/gdutbean/p/1694159.html
Copyright © 2011-2022 走看看