【洛谷】【动态规划/背包】P1833 樱花
【题目描述:】
爱与愁大神后院里种了n棵樱花树,每棵都有美学值Ci。爱与愁大神在每天上学前都会来赏花。爱与愁大神可是生物学霸,他懂得如何欣赏樱花:一种樱花树看一遍过,一种樱花树最多看Ai遍,一种樱花树可以看无数遍。但是看每棵樱花树都有一定的时间Ti。爱与愁大神离去上学的时间只剩下一小会儿了。求解看哪几棵樱花树能使美学值最高且爱与愁大神能准时(或提早)去上学。
【输入格式:】
共n+1行:
第1行:三个数:现在时间Ts(几点:几分),去上学的时间Te(几点:几分),爱与愁大神院子里有几棵樱花树n。
第2行~第n+1行:每行三个数:看完第i棵树的耗费时间Ti,第i棵树的美学值Ci,看第i棵树的次数Pi(Pi=0表示无数次,Pi是其他数字表示最多可看的次数Pi)。
【输出格式:】
只有一个整数,表示最大美学值。
输入样例#:
: : 输出样例#:
输入输出样例
【算法分析:】
01背包可以看做是只有一件物品的多重背包,所以可将三类背包问题化为两类:
- 多重背包
- 完全背包
但多重背包直接做时间复杂度太大,所以需要二进制优化,此时如何处理完全背包问题?
可以将完全背包的数量看做一个比较大,而数组中也存的开的数,比如9999,然后当做多重背包来做.
【代码:】
//P1833 樱花
#include<iostream>
#include<cstdio>
using namespace std; const int MAXN = + ;
const int INF = ; int n, T;
int t[MAXN], c[MAXN], p[MAXN];
int a[MAXN], b[MAXN], f[MAXN];
struct Time {
int h, min;
}s, e; inline int read() {
int x=, f=; char ch=getchar();
while(ch<'' || ch>'') {
if(ch == '-') f = -;
ch = getchar();
}
while(ch>='' && ch<='')
x=(x<<) + (x<<) + ch-, ch = getchar();
return x * f;
} int main() {
s.h = read(), s.min = read();
e.h = read(), e.min = read();
n = read();
T = e.min - s.min + (e.h - s.h) * ;
int cnt = ;
for(int i=; i<=n; ++i) {
t[i] = read(), c[i] = read(), p[i] = read();
if(!p[i]) p[i] = INF;
int s = ;
while(p[i] > s) {
a[++cnt] = t[i] * s;
b[cnt] = c[i] * s;
p[i] -= s;
s <<= ;
}
if(p[i]) {
a[++cnt] = t[i] * p[i];
b[cnt] = c[i] * p[i];
}
}
for(int i=; i<=cnt; ++i)
for(int j=T; j>=a[i]; --j)
f[j] = max(f[j], f[j - a[i]] + b[i]);
printf("%d\n", f[T]);
}
【洛谷】【动态规划/背包】P1833 樱花的更多相关文章
- P1616 疯狂的采药(洛谷,动态规划递推,完全背包)
先上题目链接:P1616 疯狂的采药 然后放AC代码: #include<bits/stdc++.h> #define ll long long using namespace std; ...
- P1060 开心的金明(洛谷,动态规划递推,01背包轻微变形题)
题目链接:P1060 开心的金明 基本思路: 基本上和01背包原题一样,不同点在于这里要的是最大重要度*价格总和,我们之前原题是 f[j]=max(f[j],f[j-v[i]]+p[i]); 那么这里 ...
- P1048 采药(洛谷,动态规划递推,01背包原题)
题目直接放链接 P1048 采药 这题只是01背包+背景故事而已 原题来的 PS:我写了一篇很详细的01背包说明,如果下面ac代码有看不懂的地方可以去看看 对01背包的分析与理解(图文) 下面上ac代 ...
- 【洛谷 P1445】 [Violet]樱花(唯一分解定理)
做了题还是忍不住要写一发题解,感觉楼下的不易懂啊. 本题解使用latex纯手写精心打造. 题意:求\(\frac{1}{x}+\frac{1}{y}=\frac{1}{n!}\)的正整数解总数. 首先 ...
- NOIP2000方格取数(洛谷,动态规划递推)
先上题目: P1004 方格取数 下面上ac代码: ///如果先走第一个再走第二个不可控因素太多 #include<bits/stdc++.h> #define ll long long ...
- P1541 乌龟棋 题解(洛谷,动态规划递推)
题目:P1541 乌龟棋 感谢大神的题解(他的写的特别好) 写一下我对他的代码的理解吧(哎,蒟蒻就这能这样...) 代码: #include<bits/stdc++.h> #define ...
- P1091 合唱队形题解(洛谷,动态规划LIS,单调队列)
先上题目 P1091 合唱队形(点击打开题目) 题目解读: 1.由T1<...<Ti和Ti>Ti+1>…>TK可以看出这题涉及最长上升子序列和最长下降子序列 2 ...
- 【洛谷】P4167 [Violet]樱花
题面 又懒得弄题面,开个传送门吧 分析 人生第一次切数学题,我们先把方程写出来 $$\frac {1}{x}+\frac {1}{y}=\frac {1}{n!}$$ 现在我们知道的条件是x,y都是正 ...
- 【洛谷】【动态规划/二维背包】P1855 榨取kkksc03
[题目描述:] ... (宣传luogu2的内容被自动省略) 洛谷的运营组决定,如果...,那么他可以浪费掉kkksc03的一些时间的同时消耗掉kkksc03的一些金钱以满足自己的一个愿望. Kkks ...
随机推荐
- bonecp回缩功能实现
起因 bonecp不具备回缩功能,即连接池持有连接之后,不会主动去释放这些连接(即使这些连接始终处于空闲状态),因此在使用一段时间之后,连接池会达到配置的最大值. 这种方式一定程度上造成了资源的浪费. ...
- 微信小程序,关于设置data里面的数据。
关于设置 data里面的数据 wxml: <view>{{userName}}</view> data: { userName:'张三', } 有两种方法 方法一:直接使用点关 ...
- 【原】Spring整合Shiro基础搭建[3]
1.前言 上个Shiro Demo基础搭建是基于官方的快速入门版本,没有集成其他框架,只是简单的通过Main方法来执行Shiro工作流程,并测试一下比较核心的函数:但在企业开发中一般都会集成Sprin ...
- Yarn vs npm:你需要知道的一切(转)
转载:https://zhuanlan.zhihu.com/p/23493436 原文链接:Yarn vs npm: Everything You Need to Know Facebook.Goog ...
- SVN提交小结
在我们用VS进行项目合作开发的过程中,SVN的提交控制是至关重要的,由于版本冲突造成的各种麻烦咱们已经遇到的够多了.所以,总结他们的经验教训,给我们也给其他人做个提醒.下面的第一部分是需要在正式开发之 ...
- jedis、jedisPool、jedisCluster的使用方法
jedis 连接redis(单机): 使用jedis如何操作redis,但是其实方法是跟redis的操作大部分是相对应的. 所有的redis命令都对应jedis的一个方法 1.在macen工程 ...
- thinkphp3.2 success方法注意
success方法的url一定要用U()方法来生成, $this->success('修改成功',U('showlist'),3);
- Html5不可见标签,及标签属性(元素对象属性) a href target name id 相对路径
标签属性分类(元素对象属性) 不可见标签与可见标签: <head></head> 属于不可见标签, 里面的内容一般用于css还有全局的一些变量,声明等. 而且如果 ...
- 云数据库Redis版256M双机热备款
云数据库Redis版是兼容Redis协议标准的.提供持久化的缓存式数据库服务,基于高可靠双机热备架构:全新推出的256M小规格款,适用于高QPS.小数据量业务,并支持免费全量迁移,完美服务于个人开发者 ...
- 打包jar问题
一. 先说一下一般是动态布局最好,效率高,动态就是java写布局,这是 老外的专长,一般res目录是不能打包的,布局动态写,其余的就是图片什么的了,可以建一个assess文件夹,把图片放里面,打jar ...