zoukankan      html  css  js  c++  java
  • poj 1260 Pearls 斜率优化dp

    这个题目数据量很小,但是满足斜率优化的条件,可以用斜率优化dp来做。

            要注意的地方,0也是一个决策点。


    #include <iostream>

    #include <cstdio>
    #include <cstring>
    using namespace std;
    const int maxn=1e2+9;
    int dp[maxn];
    int a[maxn],p[maxn],sum[maxn];
    int que[maxn];


    bool chk1(int i,int j,int k)
    {
        return dp[j]-dp[i]<p[k]*(sum[j]-sum[i]);
    }


    bool chk2(int k,int j,int i)
    {
        return (dp[i]-dp[j])*(sum[j]-sum[k])<(dp[j]-dp[k])*(sum[i]-sum[j]);
    }


    int main()
    {
        int T;
        scanf("%d",&T);
        while(T--)
        {
            memset(dp,50,sizeof(dp));
            sum[0]=0;
            int n;
            scanf("%d",&n);
            for(int i=1;i<=n;i++)
            {
                scanf("%d %d",&a[i],&p[i]);
                sum[i]=sum[i-1]+a[i];
            }
            dp[0]=0;
            int front=1,end=0;
            que[++end]=0;
            for(int i=1;i<=n;i++)
            {
                while(front+1<=end&&chk1(que[front],que[front+1],i))
                front++;
                int j=que[front];
                dp[i]=dp[j]+(sum[i]-sum[j]+10)*p[i];
                while(front+1<=end&&chk2(que[end-1],que[end],i))
                end--;
                que[++end]=i;
            }
            printf("%d ",dp[n]);
        }
        return 0;
    }

  • 相关阅读:
    saltstack状态判断unless与onlyif
    saltstack搭建LAMP架构案例
    saltstack编写自定义模块
    saltstack数据系统Pillar
    saltstack数据系统Grains
    自动重连套路
    golang切片
    开源库evio源码学习
    计算机操作系统
    常用数据结构的时间复杂度
  • 原文地址:https://www.cnblogs.com/keanuyaoo/p/3260277.html
Copyright © 2011-2022 走看看