P1156 垃圾陷阱

2024-08-26 16:20
文章标签 陷阱 垃圾 p1156

本文主要是介绍P1156 垃圾陷阱,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原题链接 ~~~~~      总题单链接
~~~~~      这道题的关键在于:你不能在死了之后通过吃东西复活,所以我们在状态转移的时候只转移活着的状态。
~~~~~      先考虑第一问:最早什么时候可以爬出。将物品按时间排序,用 f i f_i fi 表示吃了第 i i i 个物品能续命多久, h i h_i hi 表示能搭多高。设 d p i dp_{i} dpi 表示生命值为 i i i 的情况下的最大高度,对于每个物品有两种选择——吃或搭。如果选搭, d p [ i ] = m a x ( d p [ i ] , d p [ i ] + h ) dp[i]=max(dp[i],dp[i]+h) dp[i]=max(dp[i],dp[i]+h) d p [ i ] = d p [ i ] + h dp[i]=dp[i]+h dp[i]=dp[i]+h,如果选择吃 d p [ i + f ] = m a x ( d p [ i + f ] , d p [ i ] ) dp[i+f]=max(dp[i+f],dp[i]) dp[i+f]=max(dp[i+f],dp[i])
~~~~~      再来看第二问:最长可以存活多长时间。那就是要全选择吃,贪心即可。

#include<bits/stdc++.h>
#define ll long long
#define fir first
#define sec second
using namespace std;ll d,g,dp[3005],mx=10;// 时间,f,h 
pair<ll,pair<ll,ll>>c[105];signed main(){ios::sync_with_stdio(false);cin>>d>>g;for(ll i=1;i<=g;i++)cin>>c[i].fir>>c[i].sec.fir>>c[i].sec.sec;sort(c+1,c+1+g);memset(dp,-0x3f,sizeof(dp));for(ll i=1;i<=10;i++)dp[i]=0;for(ll i=1;i<=g;i++){ll t=c[i].fir,x=c[i].sec.fir,y=c[i].sec.sec;if(mx>=t)mx+=x;for(ll j=3000-x;j>=t;j--){dp[j+x]=max(dp[j+x],dp[j]);dp[j]+=y;}for(ll j=1;j<=3000;j++){if(dp[j]>=d){cout<<t;return 0;}}}cout<<mx<<endl;return 0;
}

这篇关于P1156 垃圾陷阱的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1109070

相关文章

SpringBoot开发中十大常见陷阱深度解析与避坑指南

《SpringBoot开发中十大常见陷阱深度解析与避坑指南》在SpringBoot的开发过程中,即使是经验丰富的开发者也难免会遇到各种棘手的问题,本文将针对SpringBoot开发中十大常见的“坑... 目录引言一、配置总出错?是不是同时用了.properties和.yml?二、换个位置配置就失效?搞清楚加

使用Python实现Windows系统垃圾清理

《使用Python实现Windows系统垃圾清理》Windows自带的磁盘清理工具功能有限,无法深度清理各类垃圾文件,所以本文为大家介绍了如何使用Python+PyQt5开发一个Windows系统垃圾... 目录一、开发背景与工具概述1.1 为什么需要专业清理工具1.2 工具设计理念二、工具核心功能解析2.

JVM垃圾回收机制之GC解读

《JVM垃圾回收机制之GC解读》:本文主要介绍JVM垃圾回收机制之GC,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、死亡对象的判断算法1.1 引用计数算法1.2 可达性分析算法二、垃圾回收算法2.1 标记-清除算法2.2 复制算法2.3 标记-整理算法2.4

C#多线程编程中导致死锁的常见陷阱和避免方法

《C#多线程编程中导致死锁的常见陷阱和避免方法》在C#多线程编程中,死锁(Deadlock)是一种常见的、令人头疼的错误,死锁通常发生在多个线程试图获取多个资源的锁时,导致相互等待对方释放资源,最终形... 目录引言1. 什么是死锁?死锁的典型条件:2. 导致死锁的常见原因2.1 锁的顺序问题错误示例:不同

【编程底层思考】垃圾收集机制,GC算法,垃圾收集器类型概述

Java的垃圾收集(Garbage Collection,GC)机制是Java语言的一大特色,它负责自动管理内存的回收,释放不再使用的对象所占用的内存。以下是对Java垃圾收集机制的详细介绍: 一、垃圾收集机制概述: 对象存活判断:垃圾收集器定期检查堆内存中的对象,判断哪些对象是“垃圾”,即不再被任何引用链直接或间接引用的对象。内存回收:将判断为垃圾的对象占用的内存进行回收,以便重新使用。

HotSpot虚拟机的经典垃圾收集器

读《深入理解Java虚拟机》第三版笔记。 关系 Serial、ParNew、Parallel Scavenge、Parallel Old、Serial Old(MSC)、Concurrent Mark Sweep (CMS)、Garbage First(G1)收集器。 如图: 1、Serial 和 Serial Old 收集器 2、ParNew 收集器 3、Parallel Sc

浅谈PHP5中垃圾回收算法(Garbage Collection)的演化

前言 PHP是一门托管型语言,在PHP编程中程序员不需要手工处理内存资源的分配与释放(使用C编写PHP或Zend扩展除外),这就意味着PHP本身实现了垃圾回收机制(Garbage Collection)。现在如果去PHP官方网站(php.net)可以看到,目前PHP5的两个分支版本PHP5.2和PHP5.3是分别更新的,这是因为许多项目仍然使用5.2版本的PHP,而5.3版本对5.2并不是完

C++学习笔记----6、内存管理(四)---- 通常的内存陷阱(2)

3、Windows环境下使用Visual C++发现并修复内存渗露         内存渗露很难跟踪是因为你无法很容易地看着内存并且看到什么对象处于使用中,一开始在哪儿分配的内存。然而,是有程序可以为你做到这一点的。内存渗露检测工具有昂贵的专业软件包,也有免费下载的工具。如果你是在Microsoft Visual C++环境下工作,它的排错工具库有内建的对于内存渗露检测的支持。该内存检测默认没有

Java虚拟机垃圾回收的几个关键问题

20151008 GC的几个关键问题,触发条件,触发的机制 主线是数据的移动,从什么位置到什么位置,移动的条件是什么? 1 垃圾收集在什么时候触发? GC都是在带满了的时候触发的,每次触发都是把不会用的不可达的对象空间回收了,留下还在用的对象。 1) MinorGC的触发是伊甸园空间满的时候 2) FullGC的触发是在老年代满的时候 2 垃圾回收的时候做哪些工作? 1) 一个新的对象new出

水面垃圾检测数据集 3000张 水面垃圾 带标注 voc yolo

数据集概述 该数据集包含3000张图像,专注于水面垃圾的检测。数据集已经按照VOC(Visual Object Classes)和YOLO(You Only Look Once)两种格式进行了标注,适用于训练深度学习模型,特别是物体检测模型,用于识别水面上的各种垃圾。 数据集特点 多样性:包含3000张图像,涵盖了多种类型的水面垃圾,确保模型能够识别各种类型的垃圾。双标注格式:提供VO