NYOJ 654喜欢玩warcraft的ltl(01背包/常数级优化)
Description
ltl 非常喜欢玩warcraft,因为warcraft十分讲究团队整体实力,而他自己现在也为升级而不拖累团队而努力。
他现在有很多个地点来选择去刷怪升级,但是在每一个地点他都要买上充足的补给和合适的道具,以免在刷怪的时候被怪物反杀了,每一个地点的怪物打完了就没有了(还居然不掉金钱跟装备),而且他只要选定了地点就一定会刷完该地点全部的怪物,同时获得对应的经验值。现在ltl 能给出每一个地点用来买补给和道具的钱和打完全部怪物所能获得的经验,但是他所拥有的钱是一定的。所以他想知道怎么选择地点使得他获得的经验最高。
Input
第一行一个整数T,表示测试数据的组数 0<T<=10
第二行两个整数N,M,0<N<=100,0<M<=1000000表示ltl拥有N个不同地点的选择和M的金钱总数
接下来N行每行两个整数ci,vi,(0<ci<=1000000,0<vi<=2000)表示ltl刷完第i个地点所需要购买补给和道具的总钱数和能获取的总经验值
Output
一行一个整数,表示ltl能够获取的最大的经验值
Sample Input
2
3 10
7 7
2 3
3 5
2 5
3 5
2 1
Sample Output
Max experience: 12
Max experience: 6
思路
01背包问题,主要是常数级的优化。我们所要求的就是f[v],而对于f[v]和最后一件要放入的物品n来说,只需要知道f[v-cn]是多少就行;于是,同理,对和物品n-1来说,需要的是
。
于是,到物品i,也就是物品n-(n-i),需要的就是。然而,有的物品可能是不会放进去的而且f[-1]是不存在的,于是,max{V-sum{c[i..n]},c[i]}。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn = 105;
int c[maxn],v[maxn];
int dp[1000005]; int main()
{
int T;
scanf("%d",&T);
while (T--)
{
int N,M;
memset(dp,0,sizeof(dp));
scanf("%d%d",&N,&M);
for (int i = 1;i <= N;i++) scanf("%d%d",&c[i],&v[i]);
for (int i = 1;i <= N;i++)
{
int tmp = 0;
for (int j = i + 1;j <= N;j++) tmp += c[j];
tmp = max(M-tmp,c[i]); //01背包常数级优化
for (int j = M;j >= tmp;j--)
{
dp[j] = max(dp[j],dp[j-c[i]]+v[i]);
}
}
printf("Max experience: %d\n",dp[M]);
}
return 0;
}
NYOJ 654喜欢玩warcraft的ltl(01背包/常数级优化)的更多相关文章
- 喜欢玩warcraft的ltl
喜欢玩warcraft的ltl 时间限制:2000 ms | 内存限制:65535 KB 难度:3 描写叙述 ltl 很喜欢玩warcraft.由于warcraft十分讲究团队总体实力,而他自己如 ...
- nyoj 203 三国志(最短路加01背包)
三国志 时间限制:3000 ms | 内存限制:65535 KB 难度:5 描述 <三国志>是一款很经典的经营策略类游戏.我们的小白同学是这款游戏的忠实玩家.现在他把游戏简化一下, ...
- 【HDU 3810】 Magina (01背包,优先队列优化,并查集)
Magina Problem Description Magina, also known as Anti-Mage, is a very cool hero in DotA (Defense of ...
- HDU——2191悼念512汶川大地震遇难同胞(多重背包转化为01背包或二进制优化)
悼念512汶川大地震遇难同胞——珍惜现在,感恩生活 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Jav ...
- NYOJ 49-开心的小明:01背包
点击打开链接 开心的小明 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 小明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间.更让他高兴的是 ...
- 【志银】NYOJ《题目860》又见01背包
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=860 方法一:不用滚动数组(方法二为用滚动数组,为方法一的简化) 动态规划分析:最少要拿总 ...
- poj2184 Cow Exhibition【01背包】+【负数处理】+(求两个变量的和最大)
题目链接:https://vjudge.net/contest/103424#problem/G 题目大意: 给出N头牛,每头牛都有智力值和幽默感,然后,这个题目最奇葩的地方是,它们居然可以是负数!! ...
- HLOJ1366 Candy Box 动态规划(0-1背包改)
题目描述: 给出N个盒子(N<=100),每个盒子有一定数量的糖果(每个盒子的糖果数<=100),现在有q次查询,每次查询给出两个数k,m,问的是,如果从N个盒子中最多打开k个盒子(意思是 ...
- NYOJ 527 AC_mm玩dota
AC_mm玩dota 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 大家都知道AC_mm比较喜欢玩游戏,特别是擅长war3这款经典游戏.某天AC_mm来到了VS平台上 ...
随机推荐
- 搜索(BFS)---最短单词路径
最短单词路径 127. Word Ladder (Medium) Input: beginWord = "hit", endWord = "cog", word ...
- spark sql 操作
DSL风格语法 1.查看DataFrame中的内容 scala> df1.show +---+--------+---+ | id| name|age| +---+--------+---+ | ...
- 发现一个好的后台模板 xtreme admin
Xtreme Admin Dashboard 是基于 bootstrap 4 的管理仪表板和控制管理面板. Xtreme 是完全响应的 HTML 模板,基于 CSS 框架 Bootstrap 4 并基 ...
- 你的package包名有问题!
今天在Eclipse中运行我的Java程序中,就弹出了以下消息的窗口: 注意窗口的名字为Java Virtual Machine Launcher . Error : A JNI error has ...
- ffmpeg知多少~~~
一.ffmpeg安装: https://jingyan.baidu.com/article/f7ff0bfcd64cea2e26bb1334.html 二.ffmpeg视频处理(包括各种视频流处理 ...
- UNIX网络编程总结一
客户与服务器通信使用TCP在同一网络通信时,大致按下面的方式通信:client→TCP→IP→以太网驱动程序→以太网→以太网驱动程序→IP→TCP→server.若不在同一网络则需要路由器连接. 客户 ...
- CSS3 Animations
CSS Animations 是CSS的一个模块,它定义了如何用关键帧来随时间推移对CSS属性的值进行动画处理.关键帧动画的行为可以通过指定它们的持续时间,它们的重复次数以及它们如何重复来控制. an ...
- maven 配置阿里云镜像
编辑%maven_home%/conf/settings.xml文件,添加 <mirror> <id>aliyun-maven</id> <mirrorOf& ...
- maven-enforcer-plugin查看冲突
我们会经常碰到这样的问题,在pom中引入了一个jar,里面默认依赖了其他的jar包.jar包一多的时候,我们很难确认哪些jar是我们需要的,哪些jar是冲突的.此时会出现很多莫名其妙的问题,什么类找不 ...
- redis集群报错:(error) CLUSTERDOWN The cluster is down
更换了电脑,把原来的电脑上的虚拟机复制到了新电脑上,启动虚拟机上的centos系统,然后启动redis集群(redis5版本),发现集群可以启动,redis进程也有,但是连接集群中的任意节点就报错,如 ...