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~(完全背包)的更多相关文章

  1. codeforces 372E. Drawing Circles is Fun

    tags:[圆の反演][乘法原理][尺取法]题解:圆の反演:将过O点的圆,映射成不过O的直线,相切的圆反演出来的直线平行.我们将集合S中的点做反演变换:(x,y)->(x/(x^2+y^2), ...

  2. ROS多机通信计算机网络配置

    以实现master和nico的互联共享信息为例 1 查看IP地址 $ifconfig 查看ip地址 可以看到 master的IP为192.168.1.10 nico的IP为192.168.1.103 ...

  3. android开发 RecyclerView 列表布局

    创建一个一行的自定义布局 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns ...

  4. Randy Pausch’s Last Lecture

          he University of Virginia American Studies Program 2002-2003.                     Randy Pausch ...

  5. 2020年算法设计竞赛 DP

    链接:https://ac.nowcoder.com/acm/contest/3002/I来源:牛客网https://ac.nowcoder.com/acm/contest/3002/I 题目描述 & ...

  6. 【博客导航】Nico博客导航汇总

    摘要 介绍本博客关注的内容大类.任务.工具方法及链接,提供Nico博文导航. 导航汇总 [博客导航]Nico博客导航汇总 [导航]信息检索导航 [导航]Python相关 [导航]读书导航 [导航]FP ...

  7. Nico Game Studio 3.地图纹理编辑 物体皮肤编辑

    完成功能: 1.地图纹理编辑功能. 图层编辑,添加/删除纹理,地图编辑.网格绘制.

  8. Nico Game Studio 2.设置页面读写 纹理载入与选择

    进度十分之慢... 配置读写一样采用之前写的自动绑定的方法: 分享一下代码: SetControl是把数据写到control上的. SetObject是把数据写到对象上 GetData是从控件读取数据 ...

  9. Nico Game Studio 1.基本UI和地图编辑基础功能

    完成了基本界面. 本来想自画UI,但是考虑到工作量较大和美观程度有限,以及工具使用对象是比较初级玩家,处于性价比和最初目的,放弃了自绘.

随机推荐

  1. CCF 最大的矩形

    问题描述 试题编号: 3 试题名称: 最大的矩形 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 在横轴上放了n个相邻的矩形,每个矩形的宽度是1,而第i(1 ≤ i ≤ n)个 ...

  2. ramnit病毒

    今天打开Hbuilder,发现每个html文档都有如下代码: <SCRIPT Language=VBScript><!--DropFileName = "svchost.e ...

  3. CentOS yum的详细使用方法

    yum是什么yum = Yellow dog Updater, Modified主要功能是更方便的添加/删除/更新RPM包.它能自动解决包的倚赖性问题.它能便于管理大量系统的更新问题yum特点可以同时 ...

  4. UIView和CALayer的区别

    CALayer属于Core Animation部分的内容,比较重要而不太好理解.以下是园子中看到的一篇文章的摘录: 以下摘自<<核心动画编程指南>>: 两者最大的区别是,图层不 ...

  5. notifyDataSetInvalidated和notifyDataSetChanged有什么区别

    notifyDataSetChanged方法通过一个外部的方法控制如果适配器的内容改变时需要强制调用getView来刷新每个Item的内容.public void notifyDataSetChang ...

  6. 常用iOS的第三方框架

    图像:1.图片浏览控件MWPhotoBrowser       实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网络下载图片并进行缓存.可对图片进行缩放等 ...

  7. 加载gif动画的三种方式

    GifView.h/** * 调用结束就开始播放动画,如果需要用户指定何时播放的话,只需要把timer的开始放到合适的位置.通过对CFDictonaryRaf 也就是gifProperties的改变, ...

  8. JQuery阻止冒泡事件on绑定中异常情况分析

    科普下事件冒泡以及默认行为,以下面例子举列子:     事件冒泡:当点击内部button元素时,会触发自身及外层 a的点击事件,这就是事件冒泡引起的.事件会随着 DOM 的层次结构依次向上传播. 事件 ...

  9. EasyUi–7.tab和datagrid和iframe的问题

    1. 多个tab切换,第2个不显示 动态添加tab Iframe页面的方法 展开 折叠 <script type="text/javascript"> $(functi ...

  10. 关于python性能提升的一些方案(上)

    一.函数调用优化(空间跨度,避免访问内存) 1.大数据求和,使用sum a = range(100000) %timeit -n 10 sum(a) 10 loops, best of 3: 3.15 ...