zoukankan      html  css  js  c++  java
  • 线性dp——cf988F

    不是很难,dp[i]表示到位置i的最小花费

    #include<bits/stdc++.h>
    using namespace std;
    #define ll long long
    #define maxn 2005
    struct Node {int pos,w;}p[maxn];
    struct Seg {int l,r;}seg[maxn];
    int n,m,a,f[maxn];
    ll dp[maxn];
    int cmp(Node a,Node b){return a.pos<b.pos;}
    
    int main(){
        cin>>a>>n>>m;
        for(int i=1;i<=n;i++){
            cin>>seg[i].l>>seg[i].r;
            for(int k=seg[i].l+1;k<=seg[i].r;k++)
                f[k]=1;
        }
        for(int i=1;i<=m;i++)
            cin>>p[i].pos>>p[i].w,p[i].pos++;
        sort(p+1,p+1+m,cmp);
        
        int first=0x3f3f3f3f,last=0;
        for(int i=a;i>=1;i--)
            if(f[i]){
                first=min(first,i);
                last=max(last,i);
            }
        if(first<p[1].pos){puts("-1");return 0;}
        
        for(int i=1;i<=m;i++){
            int s;
            for(s=p[i].pos-1;s>=1;s--)
                if(f[s])break;    
            for(int j=p[i].pos;j<=last;j++)
                if(dp[j]==0)
                    dp[j]=dp[s]+(j-p[i].pos+1)*p[i].w;
                else dp[j]=min(dp[j],dp[s]+(j-p[i].pos+1)*p[i].w);
        }
        cout<<dp[last]<<'
    ';
    }
  • 相关阅读:
    记录我发现的第一个关于 Google 的 Bug
    iOS 中的 Delayed Transition
    Appstore|IPA
    地图|定位
    开发者账号
    App跳转
    国际化
    短信|彩信
    闪光灯
    Cornerstone|SVN
  • 原文地址:https://www.cnblogs.com/zsben991126/p/11163045.html
Copyright © 2011-2022 走看看