Nico Nico Ni~(完全背包)
Time Limit:2000MS Memory Limit:65535K
Type: Program Language: Not Limited
Description
Lys plays Love Live game now. You can level up via playing songs and get experiences ei but consume
spirit si. Initially, you have n songs and spirit SP, empty experience. When you get enough experience,
you step in next level, and the experience you got flush to empty and the spirit will be filled full.
What’s more, when you step in next level, the total spirit SP will increase c, means you have c extra
spirit to consume, and required q more experiences to step in next level.
Now give you n songs, and the experience you can get and the spirit you should consume of each song.
The initially spirit SP you have, the first level experience requirement. You can tell how the level
you can step in?

Input
First line has one integer t, the number cases.
For each case, first line, n(1<=n<=10), n songs, SP(1<=SP<=1000), the initial spirit, EP(1<=EP<=100000),
the first level requirement experiences,
c(1<=c<=100), the extra spirit you can get for each level,
q(1<=q<=100), the extra requirement experiences for each level.
Next n lines, for each line, has two integers, s, e, consume spirit s and get experiences e for
each song.
Output
For each case, print the most level you can get. If the level is larger than 10000, you should only
output 10000.
Sample Input
1
2 10 10 5 6
3 3
4 4
Sample Output
2
Hint
Before playing the song, you have 10 spirit, and require 10 experience to step into next level.
You can play the first song two times and the second song one time, consume 10 spirt, and get 10
experiences, step level 2. And spirt become 15, and require 16 experiences to next level. Then
you can not step into next level with this spirit. 思路:完全背包,每一次在背包容量为sp时,获得的最大价值为mv,当mv大于等于ep时,表示能升级,此时背包容量扩充为 sp + c, 升级条件变为 mv >= (ep + q)
而随着背包容量的扩充,之前的dp[]已经保存了对应状态的最优值,故不必重新dp一遍
/*
times 108ms
by orc
*/
#include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>
#include <queue>
#include <set>
using namespace std ;
int n, sp, ep, c, q ;
int s[], e[] ;
int nsize ;
int dp[] ;
int getans(int cur)
{
int& res = dp[cur] ;
if(res != -) return res ;
res = ;
for(int i = ; i <= n; ++i)
if(cur >= s[i])
res = max(res,getans(cur - s[i]) + e[i]) ;
return res ;
}
int main()
{
#ifdef LOCAL
freopen("in.txt","r",stdin) ;
#endif int t ;
scanf("%d",&t) ;
while(t--)
{
scanf("%d%d%d%d%d",&n,&sp,&ep,&c,&q) ;
for(int i = ; i <= n; ++i) scanf("%d%d",&s[i],&e[i]) ;
int nsize = sp, lev = ;
memset(dp, - ,sizeof dp) ;
while()
{
int now = getans(nsize) ;
// printf("[%d]\n",now) ;
if(now >= ep) {lev++; nsize += c ; ep += q ;} else break ;
if(lev >= ) break ;
}
if(lev >= ) printf("10000\n") ;
else printf("%d\n",lev) ;
} }
Nico Nico Ni~(完全背包)的更多相关文章
- codeforces 372E. Drawing Circles is Fun
tags:[圆の反演][乘法原理][尺取法]题解:圆の反演:将过O点的圆,映射成不过O的直线,相切的圆反演出来的直线平行.我们将集合S中的点做反演变换:(x,y)->(x/(x^2+y^2), ...
- ROS多机通信计算机网络配置
以实现master和nico的互联共享信息为例 1 查看IP地址 $ifconfig 查看ip地址 可以看到 master的IP为192.168.1.10 nico的IP为192.168.1.103 ...
- android开发 RecyclerView 列表布局
创建一个一行的自定义布局 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns ...
- Randy Pausch’s Last Lecture
he University of Virginia American Studies Program 2002-2003. Randy Pausch ...
- 2020年算法设计竞赛 DP
链接:https://ac.nowcoder.com/acm/contest/3002/I来源:牛客网https://ac.nowcoder.com/acm/contest/3002/I 题目描述 & ...
- 【博客导航】Nico博客导航汇总
摘要 介绍本博客关注的内容大类.任务.工具方法及链接,提供Nico博文导航. 导航汇总 [博客导航]Nico博客导航汇总 [导航]信息检索导航 [导航]Python相关 [导航]读书导航 [导航]FP ...
- Nico Game Studio 3.地图纹理编辑 物体皮肤编辑
完成功能: 1.地图纹理编辑功能. 图层编辑,添加/删除纹理,地图编辑.网格绘制.
- Nico Game Studio 2.设置页面读写 纹理载入与选择
进度十分之慢... 配置读写一样采用之前写的自动绑定的方法: 分享一下代码: SetControl是把数据写到control上的. SetObject是把数据写到对象上 GetData是从控件读取数据 ...
- Nico Game Studio 1.基本UI和地图编辑基础功能
完成了基本界面. 本来想自画UI,但是考虑到工作量较大和美观程度有限,以及工具使用对象是比较初级玩家,处于性价比和最初目的,放弃了自绘.
随机推荐
- va_list使用
http://www.programfan.com/blog/article.asp?id=41937
- 解决Odoo出现的Unable to send email, please configure the sender's email address or alias.
这是由于当前登录用户的邮件地址信息缺失造成的,需要设置其邮件地址. 方法:使用创建该用户的管理员帐号登录系统,开启技术特性,在需要设置邮箱地址的用户界面点击相关的业务伙伴标签链接,如图所示:
- 核心动画基础动画(CABasicAnimation)关键帧动画
1.在iOS中核心动画分为几类: 基础动画(CABasicAnimation) 关键帧动画(CAKeyframeAnimation) 动画组(CAAnimationGroup) 转场动画(CATran ...
- 使用BAT安装 Windows Service
脚本如下: @echo off @setlocal enableextensions @cd /d "%~dp0" set InstallPath=C:\DBoxService\S ...
- nVivo highlight code中的文本
要highlight nvivo中的code一颗在如图highlight中下拉菜单选择,如coding for all nodes,所有的有归属code的文本都会被高亮.如果选择coding for ...
- 狼抓兔子(bzoj 1010)
Description 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的, 而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一 ...
- [译] 用 Swift 创建自定义的键盘
本文翻译自 How to make a custom keyboard in iOS 8 using Swift 我将讲解一些关于键盘扩展的基本知识,然后使用iOS 8 提供的新应用扩展API来创建一 ...
- Lattice 的 DDR IP核使用调试笔记之工程建立
DDR3的IP核的使用相当重要,尤其是对视频处理方面. 下面接收DDR3 的IP 核的生成步骤. 1. 选择DDR IP核的生成路径.名字以及哪种语言之后就可以设置DDR IP 的参数了. 2.选择存 ...
- 按键的使用(一)------verilog
按键在项目中应用还是很频繁的,这里主要介绍按键的几种用法. 1.按下一次有效:按下一次计数器增加一下. 2.按下连续有效:按下不松,计数器就一直增加. 3.按下无效,松开有效:按下时计数器值不变,按键 ...
- MyEclipse破解(MEGen.java)
步骤: 1.将MEGen.java粘贴到任意web项目下,运行结果如下: 2.输入注册名:如sun,得到注册码: 3.Window >> Preference >> S ...