zoukankan      html  css  js  c++  java
  • Watermelon Full of Water [ZOJ 4778]

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4778

    优先队列优化下的DP,dp[i]记录的是吃到i天的最小花费,最后dp[N]即为答案。

    View Code
    const int MM = 111111;
    #define debug puts("wrong")
    typedef long long int64;
    //typedef __int64 int64;
    int64 N, cnt;
    struct Info{int64 x,y;}p[MM];
    struct Tpoint{
        int64 val,dead;
        //Tpoint(int v,int d):val(v),dead(d) {}
        bool friend operator<(Tpoint x,Tpoint y) {
            if(x.val!=y.val) return x.val>y.val;
            else return x.dead>y.dead;
        }
    };
    priority_queue<Tpoint>que;
    
    void get_data() {
        int64 i,j,k;
        for(i=1;i<=N;i++) scanf("%lld",&p[i].x);
        for(i=1;i<=N;i++) scanf("%lld",&p[i].y);
    }
    int64 dp[MM];
    void solve() {
        int64 i,j,k,tmp, mx;
        Tpoint tt, t1, t2;
        while(!que.empty()) que.pop();
        t1.val=p[1].x, t1.dead=p[1].y;
        dp[1]=p[1].x;
        que.push(t1);
        for(i=2;i<=N;i++) {                
                t1.val=dp[i-1]+p[i].x;
                t1.dead=i+p[i].y-1;    
                que.push(t1);
            while(!que.empty() && que.top().dead<i) que.pop();
            dp[i]=que.top().val;
        }
        printf("%lld\n", dp[N]);
    }
    int main() {
        while(scanf("%lld",&N)!=EOF) get_data(),solve();
        return 0;
    }
  • 相关阅读:

    守护线程
    下载图片
    多线程
    self的作用
    设置项目地址环境
    对象 类
    ValueError: urls must start with a leading slash
    mock挡板接口开发
    K&R——第五章 指针与数组
  • 原文地址:https://www.cnblogs.com/zhang1107/p/3025948.html
Copyright © 2011-2022 走看看