zoukankan      html  css  js  c++  java
  • The Boomsday Project 题解(玄学dp)

    题目链接

    题目思路

    感觉这个dp有点阴间

    只可意会不能言传

    \(pre[i]\)表示第\(i\)张优惠卷上次是在第\(i\)天用

    \(dp\)的正确性还是很显然,但是这种写法还是第一次见

    代码

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    typedef unsigned long long ull;
    //typedef pair<int,int> pii;
    #define fi first
    #define se second
    #define debug printf("aaaaaaaaaaa\n");
    const int maxn=6e5+5,inf=0x3f3f3f3f,mod=998244353;
    const ll INF=0x3f3f3f3f3f3f3f3f;
    int n,m,r;
    ll dp[maxn];
    int d[maxn],k[maxn],c[maxn];
    int pre[maxn];
    int a[maxn];
    int main(){
        scanf("%d%d%d",&n,&m,&r);
        for(int i=1;i<=n;i++){
            scanf("%d%d%d",&d[i],&k[i],&c[i]);
            pre[i]=1;// 第1天使用
        }
        int cnt=0;
        for(int i=1,p,q;i<=m;i++){
            scanf("%d%d",&p,&q);
            while(q--){
                a[++cnt]=p;
            }
        }
        sort(a+1,a+1+cnt);
        for(int i=1;i<=cnt;i++){
            dp[i]=dp[i-1]+r;
            for(int j=1;j<=n;j++){
                while(a[pre[j]]+d[j]-1<a[i]||pre[j]+k[j]-1<i){
                    pre[j]++;
                }
                dp[i]=min(dp[i],dp[pre[j]-1]+c[j]);
            }
        }
        printf("%lld\n",dp[cnt]);
        return 0;
    }
    
    
    不摆烂了,写题
  • 相关阅读:
    ARM指令集----寻址方式
    [js] 实现接口
    sublime自定义配置
    [javascript] postmessage
    [javascript] visible - 待写
    [读书笔记]24个比利
    解决div里面img的缝隙问题(转)
    【JAVASCRIPT】React + Redux
    【JAVASCRIPT】React 学习
    代理
  • 原文地址:https://www.cnblogs.com/hunxuewangzi/p/15053976.html
Copyright © 2011-2022 走看看