• [luogu1156]垃圾陷阱_动态规划_背包dp


    垃圾陷阱 luogu-1156

        题目大意:Holsteins在距离地面D英尺的地方,FJ间隔时间ti会往下扔第i个垃圾。Holsteins对待每一个垃圾都会选择吃掉或者垫高。Holsteins有10个点儿的生命值,每个垃圾会给她提供f的生命值。每小时Holsteins会消耗一定的生命值。问:Holsteins最早可以什么时候爬出;否则输出Holsteins可以存活多长时间。

        注释:$2le Dle 100$,$0 < t le 1000$,$1le h le 25$,$1le f le 30$。

          想法:背包dp,和普通的背包不同的是如果这个物品不选,那么它会对Holsteins的生命值产生影响,稍微判断即可。

        最后,附上丑陋的代码... ...

    // luogu-judger-enable-o2
    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #define N 110 
    using namespace std;
    struct Node
    {
    	int t,h,l;
    }f[N];
    int n,m;
    int ti[N];
    int dp[N];
    inline bool cmp(Node a,Node b)
    {
    	return a.t<b.t;
    }
    int main()
    {
    	scanf("%d%d",&n,&m);
    	for(int i=1;i<=m;i++)
    	{
    		scanf("%d%d%d",&f[i].t,&f[i].l,&f[i].h);
    	}
    	sort(f+1,f+m+1,cmp);
    	dp[0]=10;
    	for(int i=1;i<=m;i++)
    	{
    		for(int j=n;j>=0;j--)
    		{
    			if(dp[j]>=f[i].t)
    			{
    				if(j+f[i].h>=n)
    				{
    					cout<<f[i].t;
    					return 0;
    				}
    				dp[j+f[i].h]=max(dp[j+f[i].h],dp[j]);
    				dp[j]+=f[i].l;
    			}
    		}
    	}
    	printf("%d
    ",dp[0]);
    	return 0;
    }
    

        小结:无。

  • 相关阅读:
    🍖权限管理之高级权限 ACL
    C#中的interface没那么简单【转】
    URL与物理文件的分离【转】
    共享工作簿
    关于runas explorer.exe 的问题
    但愿汶川早日恢复平静但愿灾区人民早日重建家园!
    正确删除系统隐藏的设备
    vim配置文件.vimrc
    outlook中的邮件归档
    Windows 系统环境变量
  • 原文地址:https://www.cnblogs.com/ShuraK/p/9022866.html
Copyright © 2020-2023  润新知