bzoj 4457: 游戏任务
4457: 游戏任务
Time Limit: 10 Sec Memory Limit: 64 MB
Submit: 128 Solved: 71
[Submit][Status][Discuss]
Description
Cities的游戏。由于迫切需要升级你的城市,而且因为你太笨了,只知道做任务可以增加经验值,所以你决定去做游戏任务。你使用了一种顶尖的黑客技术得到了整个游戏的任务描述,发现这个游戏的任务可以分成主任务和附属任务两种,而你只有在完成主任务后才能解锁该主任务下的附属任务。你快速估计了一下你完成每个任务所需要的时间,并了解了完成这个任务可以增加的经验值,而经验值正是你升级所必须的。然而留给你的时间不长了,因为你的暑假只剩下
个小时了,而暑假过后你打算要好好学习,再也不会玩游戏了。所以你希望能够在这有限的 小时内获得最大的经验值。你整理出了做每个任务需要的时间
和做每个任务能够获得的经验值 ( 的单位为小时且保证 和
都是整数),然而你并不关心应该做什么样的任务,你只关心自己能得到的最大的经验值是多少。(我们假设你能够一天24小时不睡觉不吃饭不上厕所,全部用来玩游戏)
Input
Output
输出一行,包含一个整数,表示可以获得的经验值的最大值。
Sample Input
0 2 3
0 3 6
0 5 8
Sample Output
HINT
1≤n≤100,0≤n_i≤500,1≤t_ij,T≤500,1≤c_ij≤100,000
可以每个大任务单独背包,然后再和外面的大背包合并,共复杂度是 O(T*∑n_i + T^2*n)
前面一个的复杂度是每个大任务单独背包的,后面的是合并这个大任务和总背包。
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int n,m,T,bag[505];
int N,f[505],V,W,v,w; inline void dp(){
memset(f,0,sizeof(f));
scanf("%d%d%d",&N,&V,&W);
for(int i=1,O;i<=N;i++){
scanf("%d%d",&v,&w);
O=V+v;
for(int j=T;j>=O;j--) f[j]=max(f[j],f[j-v]+w);
}
for(int i=V;i<=T;i++) f[i]+=W;
} inline void merge(){
for(int i=T;i;i--)
for(int j=0;j<=i;j++) bag[i]=max(bag[i],bag[i-j]+f[j]);
} int main(){
scanf("%d%d",&n,&T);
for(int i=1;i<=n;i++){
dp();
merge();
}
printf("%d",bag[T]);
return 0;
}
bzoj 4457: 游戏任务的更多相关文章
- bzoj 5288 游戏
bzoj 5288 游戏 显然从点 \(x\) 出发,能到达的点是包含 \(x\) 的一段区间.用 \(L,R\) 两个数组记录每个点对应的区间端点. 如果能预处理出 \(L,R\) ,询问显然可以 ...
- bzoj 1854 游戏 二分图匹配 || 并查集
题目链接 Description lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当他使用某种装备时,他只能使用该装备的 ...
- BZOJ 1854 游戏
Description lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有\(2\)个属性,这些属性的值用\([1,10000]\)之间的数表示.当他使用某种装备时,他只能使用该 ...
- BZOJ 1025 游戏
Description windy学会了一种游戏.对于1到N这N个数字,都有唯一且不同的1到N的数字与之对应.最开始windy把数字按顺序1,2,3,……,N写一排在纸上.然后再在这一排下面写上它们对 ...
- BZOJ 1443 游戏(二分图博弈)
新知识get. 一类博弈问题,基于以下条件: 1.博弈者人数为两人,双方轮流进行决策.2.博弈状态(对应点)可分为两类(状态空间可分为两个集合),对应二分图两边(X集和Y集).任意合法的决策(对应边) ...
- bzoj 4465 游戏中的学问
Written with StackEdit. Description 大家应该都见过很多人手拉手围着篝火跳舞的场景吧?一般情况下,大家手 拉手跳舞总是会围成一个大圈,每个人的左手拉着旁边朋友的右手, ...
- BZOJ 1854 游戏(二分图匹配或并查集)
此题的二分图匹配做法很容易想,就是把属性当做s集,武器当做t集,如果该武器拥有该武器则连一条边. 那么答案就是求该二分图的最大前i个匹配.将匈牙利算法改一改,当前找不到增广路就break. 但是过这个 ...
- BZOJ 1025 游戏(分组背包)
题目所谓的序列长度实际上就是各循环节的lcm+1. 所以题目等价于求出 一串数之和等于n,这串数的lcm种数. 由唯一分解定理可以联想到只要把每个素数的幂次放在一个分组里,然后对整体做一遍分组背包就行 ...
- bzoj 4465 游戏中的学问(game)
题目描述 输入 输出 样例输入 3 1 1000000009 样例输出 2 提示 solution 令f[i][j]表示i个人围成j个圈的方案数 啥意思呢 可以把一个人塞进前面的圈里(i-1种塞法) ...
随机推荐
- 详解Mac睡眠模式设置
详解Mac睡眠模式设置 原文链接:http://www.insanelymac.com/forum/index.php?showtopic=281945 需要说明的是,首先这篇文章是针对已经能够成功睡 ...
- 51nod 1264 线段相交——计算几何
题目链接:http://www.51nod.com/Challenge/Problem.html#!#problemId=1264 检查点的位置就行了,具体见注释. /* (a-c)×(d-c)*(d ...
- Spring Boot + Mybatis + Druid 动态切换多数据源
在大型应用程序中,配置主从数据库并使用读写分离是常见的设计模式. 在Spring应用程序中,要实现读写分离,最好不要对现有代码进行改动,而是在底层透明地支持. 这样,就需要我们再一个项目中,配置两个, ...
- fork()函数,一次调用,两次返回
参考自:http://blog.csdn.net/dog_in_yellow/archive/2008/01/13/2041079.aspx 以前一直迷惑,什么叫一次调用,两次返回.通过上网搜索,终于 ...
- JAVA面向过程VS面向对象
面向过程 面向过程是一种自顶向下的编程,强调行为过程,可扩展性可维护性差. 优点: 性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源. 单片机.嵌入式开发.Linux/Unix等一般 ...
- js中的this关键字
this是Javascript语言的一个关键字它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用,下面分四种情况,详细讨论this的用法 this是Javascript语言的一个关键字. 它 ...
- jmeter压力测试入门
http://www.51testing.com/html/80/n-853680.html http://blog.csdn.net/vincy_zhao/article/details/70238 ...
- visual studio 的生成、重新生成、清理功能的说明
生成 生成当前选中的项目,依赖的项目如果已经生成dll,则不生成,直接拷贝过来 重新生成 生成当前选中的项目,依赖的项目也会生成 清理 清除掉生成的dll和相关文件
- es6--之箭头函数
「箭头函数」是 ECMAScript6 中非常重要的性特性.很多文章都在描述它的上下文透明性以及短语法.新特性必然会带来很多好处,但凡事都有两面性.本篇文章会通过情景引导,让你知晓哪些情景下应该绕过箭 ...
- Java-确定被加载类的路径
如何输出当前类在硬盘的物理路径 package com.tj; import java.net.URL; import java.security.CodeSource; import java.se ...