P1833 樱花(多重背包)(内附封面)

樱花

题目背景

《爱与愁的故事第四弹·plant》第一章。

题目描述

爱与愁大神后院里种了 n n n 棵樱花树,每棵都有美学值 C i ( 0 ≤ C i ≤ 200 ) C_i(0 \le C_i \le 200) Ci(0Ci200)。爱与愁大神在每天上学前都会来赏花。爱与愁大神可是生物学霸,他懂得如何欣赏樱花:一种樱花树看一遍过,一种樱花树最多看 P i ( 0 ≤ P i ≤ 100 ) P_i(0 \le P_i \le 100) Pi(0Pi100) 遍,一种樱花树可以看无数遍。但是看每棵樱花树都有一定的时间 T i ( 0 ≤ T i ≤ 100 ) T_i(0 \le T_i \le 100) Ti(0Ti100)。爱与愁大神离去上学的时间只剩下一小会儿了。求解看哪几棵樱花树能使美学值最高且爱与愁大神能准时(或提早)去上学。

输入格式

n + 1 n+1 n+1行:

1 1 1 行:现在时间 T s T_s Ts(几时:几分),去上学的时间 T e T_e Te(几时:几分),爱与愁大神院子里有几棵樱花树 n n n。这里的 T s T_s Ts T e T_e Te 格式为:hh:mm,其中 0 ≤ h h ≤ 23 0 \leq hh \leq 23 0hh23 0 ≤ m m ≤ 59 0 \leq mm \leq 59 0mm59,且 h h , m m , n hh,mm,n hh,mm,n 均为正整数。

2 2 2 行到第 n + 1 n+1 n+1 行,每行三个正整数:看完第 i i i 棵树的耗费时间 T i T_i Ti,第 i i i 棵树的美学值 C i C_i Ci,看第 i i i 棵树的次数 P i P_i Pi P i = 0 P_i=0 Pi=0 表示无数次, P i P_i Pi 是其他数字表示最多可看的次数 P i P_i Pi)。

输出格式

只有一个整数,表示最大美学值。

样例 #1

样例输入 #1

6:50 7:00 3
2 1 0
3 3 1
4 5 4

样例输出 #1

11

提示

100 % 100\% 100% 数据: T e − T s ≤ 1000 T_e-T_s \leq 1000 TeTs1000(即开始时间距离结束时间不超过 1000 1000 1000 分钟), n ≤ 10000 n \leq 10000 n10000。保证 T e , T s T_e,T_s Te,Ts 为同一天内的时间。

样例解释:赏第一棵樱花树一次,赏第三棵樱花树 2 2 2 次。

大致思路

二进制拆分
做法: 把每一个物品根据2的多少次方拆分,因为任何数都可以转化为二进制数

核心思想 :把每一个物品拆成很多个,分别计算价值和所需时间,再转化为01背包求解

最后一点 :完全背包可以把他的空间记为999999,不要太大,一般百万就足够了,当然也可以分开做背包

f [ j ] = m a x ( f [ j ] , f [ j − w [ i ] ] + v [ i ] ) f[j]=max(f[j],f[j-w[i]]+v[i]) f[j]=max(f[j],f[jw[i]]+v[i])

#include<bits/stdc++.h>
using namespace std;
#define int long long int 
#define intt int
const int N=1e5;
int n,zw,M;
int a[N*11],w[N*11],v[N*11],f[110050];
signed main(){
	char l;
	int h1,m1,h2,m2;
	cin>>h1>>l>>m1;
	cin>>h2>>l>>m2;
	zw=h2*60+m2-h1*60-m1;
	cin>>n;
	M=1;
	for(int i=1;i<=n;i++){
		int ww,vv,pp;
		cin>>ww>>vv>>pp;
		if(pp==1){
			w[M]=ww;
			v[M]=vv;
			M++;
		}
		else {
			if(pp==0)pp=zw;
			int tmp=1;
			while(pp){
				w[M]=tmp*ww;
				v[M]=tmp*vv;
				M++;
				pp-=tmp;
				tmp*=2;
				if(pp<tmp){
					w[M]=pp*ww;
					v[M]=pp*vv;
					M++;
					break;
				}
			}
		}
	}
	for(int i=1;i<=M;i++){
		for(int j=zw;j>=w[i];j--){
			f[j]=max(f[j],f[j-w[i]]+v[i]);
		} 
	}
	cout<<f[zw];
	return 0;
}

附封面(秒速五厘米)

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/61881.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

代码分析:循环创建N个子进程——为什么最后一个属于父进程?

黑马C/C 2018年32期代码分析 //循环创建n个子进程 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/types.h> #include <unistd.h>int main() {int i 0;for(i0; i<3; i){//创建子进程pid_t pid fork();if(pid&…

Qt实现可伸缩的侧边工具栏(鼠标悬浮控制伸缩栏)

Qt实现可伸缩的侧边工具栏 一直在网上找&#xff0c;发现大多的实现方案都是用一个按钮&#xff0c;按下控制侧边栏的伸缩&#xff0c;但是我想要实现鼠标悬浮在侧边栏的时候就伸出&#xff0c;移开就收缩的功能&#xff0c;也没找到好的参考&#xff0c;所以决定自己实现一个…

QT中使用ffmpeg的api进行视频的播放

在了解ffmpeg使用api进行视频的播放之前&#xff0c;我们首先了解一下视频的播放流程。 一、视频的播放流程 首先是我们最常见的视频文件&#xff0c;在播放流程中首先是要打开视频文件&#xff0c;将视频文件中的数据进行解封装&#xff0c;之后再将解封装之后的视频进行解码…

【LeetCode】287. 寻找重复数

287 . 寻找重复数&#xff08;中等&#xff09; 方法 快慢指针 思路 要解决这道题首先要理解如何将输入的数组看作为链表。对于数组 nums 中的数字范围在 [1, n]&#xff0c;考虑两种情况&#xff1a; 如果数组中没有重复的数字&#xff0c;以 [1, 3, 4, 2] 为例&#xff0c;将…

FPGA优质开源项目 - UDP RGMII千兆以太网

本文介绍一个FPGA开源项目&#xff1a;UDP RGMII千兆以太网通信。该项目在我之前的工作中主要是用于FPGA和电脑端之间进行图像数据传输。本文简要介绍一下该项目的千兆以太网通信方案、以太网IP核的使用以及Vivado工程源代码结构。 Vivado 的 Tri Mode Ethernet MAC IP核需要付…

MPU6050

偏航角&#xff08;Yaw&#xff09; 横滚角&#xff08;ROll&#xff09; 俯仰角&#xff08;Pit&#xff09; 误差 mpu6050里面有一个受力的东西 受重力影响的电容 某个导体就往下一点 根据fma就可以算出当前的加速度值 加速度传感器只输出加速度 知道重力加速度和重力的角度可…

flask中实现restful-api

flask中实现restful-api 举例&#xff0c;我们可以创建一个用于管理任务&#xff08;Task&#xff09;的API。在这个例子中&#xff0c;我们将有以下API&#xff1a; GET /tasks: 获取所有任务POST /tasks: 创建一个新的任务GET /tasks/<id>: 获取一个任务的详情PUT /t…

软工导论知识框架(四)结构化系统的实现

一.编码 编码和测试统称为系统实现。 1.目的&#xff1a;把模块的过程性描述翻译为用选定的程序设计语言书写的源程序&#xff08;源代码&#xff09;。 &#xff08;真正交付给用户使用的&#xff0c;并不是源代码&#xff0c;而是经过编译链接生成的可执行的代码&#xff…

Leetcode-每日一题【剑指 Offer 09. 用两个栈实现队列】

题目 用两个栈实现一个队列。队列的声明如下&#xff0c;请实现它的两个函数 appendTail 和 deleteHead &#xff0c;分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素&#xff0c;deleteHead 操作返回 -1 ) 示例 1&#xff1a; 输入&#xff1a; [&…

三款Notion网页插件,让你的Notion更好用

今天给大家分享一下我常用的Notion插件&#xff1a;Bookmarks to Notion&#xff0c;Save to Notion&#xff0c;Notion boost。这三款插件大大提升了我的Notion网页端使用体验。 Bookmarks to Notion 这款软件可以把你的网页书签保存到Notion&#xff0c;你甚至可以快速的用…

深度学习入门必读 | 深度学习算法技术原理和发展

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。随着人工智能技术的发展&#xff0c;深度学习已经成为了一个热门话题。为了让大家能够更清晰直观的了解深度学习&#xff0c;今天这篇文章就重点给大家介绍一下深度学习算法的技术原理和发展&#xff01;&#x1f308; 目录…

Linux学习之正则表达式元字符和grep命令

cat /etc/redhat-release看到操作系统的版本是CentOS Linux release 7.6.1810 (Core)&#xff0c;uname -r可以看到内核版本是3.10.0-957.21.3.el7.x86_64。 正则表达式是一种搜索字符串的模式&#xff0c;通俗点理解&#xff0c;也就是普通字符和元字符共同组成的字符集合匹…

【Megatron-DeepSpeed】张量并行工具代码mpu详解(三):张量并行层的实现及测试

相关博客 【Megatron-DeepSpeed】张量并行工具代码mpu详解(三)&#xff1a;张量并行层的实现及测试 【Megatron-DeepSpeed】张量并行工具代码mpu详解(一)&#xff1a;并行环境初始化 【Megatron-DeepSpeed】张量并行工具代码mpu详解(二)&#xff1a;Collective通信操作的封装ma…

生成式 AI 简介:使用 Python 从头开始学习 GenAI

一、介绍 大家好&#xff01;&#xff0c;欢迎来到“使用 Python 从头开始学习生成 AI”系列。本系列涵盖了数据科学家和软件工程师可以了解的有关生成式 AI 的所有内容&#xff0c;并在这个奇妙的 GenAI 领域开始他们的旅程。我将告诉你从Python到机器学习&#xff0c;然后是深…

多线程案例(3)-定时器

文章目录 多线程案例三三、 定时器 大家好&#xff0c;我是晓星航。今天为大家带来的是 多线程案例三 相关的讲解&#xff01;&#x1f600; 多线程案例三 三、 定时器 定时器是什么 定时器也是软件开发中的一个重要组件. 类似于一个 “闹钟”. 达到一个设定的时间之后, 就…

Python Opencv实践 - 基本图像IO操作

import numpy as np import cv2 as cv import matplotlib.pyplot as plt#读取图像 #cv2.IMREAD_COLOR&#xff1a; 读取彩色图像&#xff0c;忽略alpha通道&#xff0c;也可以直接写1 #cv2.IMREAD_GRAYSCALE: 读取灰度图&#xff0c;也可以直接写0 #cv2.IMREAD_UNCHANGED: 读取…

SQL ASNI where from group order 顺序

SQL语句执行顺序&#xff1a; from–>where–>group by -->having — >select --> order 第一步&#xff1a;from语句&#xff0c;选择要操作的表。 第二步&#xff1a;where语句&#xff0c;在from后的表中设置筛选条件&#xff0c;筛选出符合条件的记录。 …

JavaScript实践:用Canvas开发一个可配置的大转盘抽奖功能

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;全栈领域新星创作者✌&#xff0c;阿里云社区专家博主&#xff0c;2023年6月csdn上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &#x1f3c6;本文已…

【瑞吉外卖项目复写】基本部分复写笔记

Day1 瑞吉外卖项目概述 mysql的数据源配置 spring:datasource:druid:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/regie?serverTimezoneAsia/Shanghai&useUnicodetrue&characterEncodingutf-8&zeroDateTimeBehaviorconvertTo…

【C++】深入浅出STL之vector类

文章篇幅较长&#xff0c;越3万余字&#xff0c;建议电脑端访问 文章目录 一、前言二、vector的介绍及使用1、vector的介绍2、常用接口细述1&#xff09;vector类对象的默认成员函数① 构造函数② 拷贝构造③ 赋值重载 2&#xff09;vector类对象的访问及遍历操作① operator[]…
最新文章