zoukankan      html  css  js  c++  java
  • dp(0)

    比赛前来一发

    近期写的几个入门dp都不会的转移方程

    **p1280 **

    在1~N的区间中有若干个任务,求出最大的空闲时间

    反向递推 dp[i]为当前时间点的最大空闲时间

    如果当前时间的任务数为0

    [dp[i] = dp[i+1] + 1 ]

    如果当前时间的任务数大于零

    [dp[i] = max(dp[i],dp[i+end[j]]) ]

    j取值为当前时间开始的所有任务

    P1020 导弹拦截

    第一问求最长不下降子序列,第二问求最长不上升子序列(后面不上升序列可以用当前系统拦截?上升了则需要新的系统)

    dp[i]是长度为i的不下降子序列的最大结束点

    如果当前a[i]<=dp[cur]

    	dp[++cur] = a[i];
    

    长度加1 结束点为a[i]

    如果当前a[i]>dp[cur]

    int l=0,r=cur;
    int mid
    {
    	while(l<r)
        {
        	mid = (l+r)>>1;
        	if(dp[mid]>=a[i])	
            	l = mid +1;
            else
            	r = mid;
        }
        dp[l] = a[i];
    }
    

    二分长度(dp的值满足单调性) 更新dp值为a[i]

    p1091

    要求序列满足 $T_1<T_2dots<T_i>T_i+1dots>T_k $
    求序列的最大长度

    我们可以计算从左到右每个点的最长上升序列和从右到左每点的下降序列

    对每个点的上升序列加下降序列最大减1即为答案

    for(int i=1;i<=n;++i)
    {
    	for(int j=1;j<i;++j)
        {
    		if(a[i]>a[j])
            	dp[i] = max(dp[i],dp[j]+1;
        }
    }
    
    
  • 相关阅读:
    Fish
    Brackets
    StoneWall【★★★★★】
    Nesting
    ajax补充FormData
    初始Ajax
    extra过滤
    Django 之缓存
    django中的信号
    Form组件归类
  • 原文地址:https://www.cnblogs.com/xxrlz/p/10555619.html
Copyright © 2011-2022 走看看