POJ1036——动态规划

博客探讨了如何使用动态规划解决一个与餐厅门的开度和顾客体型匹配有关的问题。每个顾客都有特定的到场时间和肥胖值,饭店在门适合顾客体型时能获得繁荣度。动态规划思路是通过状态转移方程dp[i] = max(dp[j] + p),其中ti-tj>si-sj,来找出最大繁荣度。
摘要由CSDN通过智能技术生成

题目描述:

有一伙人要去饭店,饭店的门可以控制大小,但是每个时间间隔只能开大一个或者关闭一个,每个人有一个肥胖值,到场时间和繁荣度。人在他的到场时间到达饭店,如果饭店的门正好符合他的体型,饭店就能获得当前的繁荣度。问最大的繁荣度是多少。

大致思路:

这个题目一看就是一个很明显的动规。对于一个时间T和一个人P,T时间下S开度的状态只能从0-T-S转移过来,有了这个就有了状态方程。

dp[i] = max(dp[j] + p);其中ti-tj>si-sj。

代码:

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>

using namespace std;

const int maxn = 100 + 10;

struct gang {
    int p,s,t;
    bool operator < (const gang& ano) const{
        return t < ano.t;
    }
}g[maxn];

int n,k,t;
int ans[maxn];

int main() {
    scanf("%d%d%d",&n,&k,&t);
    for (int i = 1; i <= n; i++) scanf("%d
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值