喜欢玩warcraft的ltl

喜欢玩warcraft的ltl

时间限制:2000 ms  |  内存限制:65535 KB

难度:3

描述

ltl 非常喜欢玩warcraft,因为warcraft十分讲究团队整体实力,而他自己现在也为升级而不拖累团队而努力。

他现在有很多个地点来选择去刷怪升级,但是在每一个地点他都要买上充足的补给和合适的道具,以免在刷怪的时候被怪物反杀了,每一个地点的怪物打完了就没有了(还居然不掉金钱跟装备),而且他只要选定了地点就一定会刷完该地点全部的怪物,同时获得对应的经验值。现在ltl 能给出每一个地点用来买补给和道具的钱和打完全部怪物所能获得的经验,但是他所拥有的钱是一定的。所以他想知道怎么选择地点使得他获得的经验最高。

输入
第一行一个整数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个地点所需要购买补给和道具的总钱数和能获取的总经验值

输出
一行一个整数,表示ltl能够获取的最大的经验值
样例输入
2
3 10
7 7
2 3
3 5
2 5
3 5
2 1
样例输出
Max experience: 12
Max experience: 6
读完题,立马断定01背包问题,然后直接写代码,不幸的是,TLE不期而至!
超时代码:
#include<stdio.h>
struct node
{
	int c;
	int w;
}num[105];
int dp[1000005];
int Max(int a,int b)
{
	return a>b?a:b;
}
int main()
{
	int T,n,m;
	int i,j;
	scanf("%d",&T);
	while(T--)
	{
		scanf("%d%d",&n,&m);
		for(i=0;i<n;i++)
		{
			scanf("%d%d",&num[i].c,&num[i].w);
		}
		for(i=0;i<n;i++)
		{
			for(j=m;j>=num[i].c;j--)
			{
				dp[j]=Max(dp[j],dp[j-num[i].c]+num[i].w);
			}
		}
		printf("Max experience: %d\n",dp[m]);
	}
	return 0;
}

以下为优化代码:

#include<stdio.h>
struct node
{
	int c;
	int w;
}num[105];
int dp[1000005];
int Max(int a,int b)
{
	return a>b?a:b;
}
int main()
{
	int T,n,m;
	int i,j,s,count;
	scanf("%d",&T);
	while(T--)
	{
		scanf("%d%d",&n,&m);
		s=0;
		for(i=0;i<n;i++)
		{
			scanf("%d%d",&num[i].c,&num[i].w);
			s+=num[i].c;
		}
		for(i=0;i<=m;i++)
			dp[i]=0;
		for(i=0;i<n;i++)
		{
			s-=num[i].c;
			count=Max(m-s,num[i].c);
			for(j=m;j>=count;j--)
			{
				dp[j]=Max(dp[j],dp[j-num[i].c]+num[i].w);
			}
		}
		printf("Max experience: %d\n",dp[m]);
	}
	return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-13 12:18:46

喜欢玩warcraft的ltl的相关文章

NYOJ 654 喜欢玩warcraft的ltl

喜欢玩warcraft的ltl 时间限制:2000 ms  |  内存限制:65535 KB 难度:3 描述 ltl 非常喜欢玩warcraft,因为warcraft十分讲究团队整体实力,而他自己现在也为升级而不拖累团队而努力. 他现在有很多个地点来选择去刷怪升级,但是在每一个地点他都要买上充足的补给和合适的道具,以免在刷怪的时候被怪物反杀了,每一个地点的怪物打完了就没有了(还居然不掉金钱跟装备),而且他只要选定了地点就一定会刷完该地点全部的怪物,同时获得对应的经验值.现在ltl 能给出每一个地

NYOJ 654喜欢玩warcraft的ltl(01背包/常数级优化)

传送门 Description ltl 非常喜欢玩warcraft,因为warcraft十分讲究团队整体实力,而他自己现在也为升级而不拖累团队而努力. 他现在有很多个地点来选择去刷怪升级,但是在每一个地点他都要买上充足的补给和合适的道具,以免在刷怪的时候被怪物反杀了,每一个地点的怪物打完了就没有了(还居然不掉金钱跟装备),而且他只要选定了地点就一定会刷完该地点全部的怪物,同时获得对应的经验值.现在ltl 能给出每一个地点用来买补给和道具的钱和打完全部怪物所能获得的经验,但是他所拥有的钱是一定的.

NYOJ 654 喜欢玩warcraft的ltl (01背包常数优化)

[题目链接]:click here~~ 一个常数优化 前面的伪代码中有 for v=V..1,可以将这个循环的下限进行改进. 由于只需要最后f[v]的值,倒推前一个物品,其实只要知道f[v-w[n]]即可.以此类推,对以第j个背包,其实只需要知道到f[v-sum{w[j..n]}]即可,即代码中的 for i=1..N     for v=V..0 可以改成 for i=1..n     bound=max{V-sum{w[i..n]},c[i]}     for v=V..bound 这对于V

最喜欢玩“一键”套路的360,这次为啥玩“上网”

如果说互联网上,谁动不动就说"一键",毫无疑问当然是周鸿祎和他的360. 这不,就在360回归A股没几天,它家的360安全卫士悄然上线了"一键上网"功能,又一次用经典的360战法,用一个最小的切入点,一个最简单的动作,想要在互联网上搞风搞雨. 而和360悄然在回归A股上市时,将自己的名词定位"三六零安全科技股份有限公司"那样,网络二字被悄然拿下,安全二字被显著提及. 一个安全公司,打得一手安全上网牌,走的还是红衣教主的简约风. 说了半天,一键上网

我很喜欢玩游戏,那么我就适合做游戏程序员吗?

作者:黄小斜 文章来源:微信公众号[程序员江湖] 游戏在今天的普及度已经不是端游时代可以比肩的了.如今人手一台手机.平板就可以吃鸡.打农药,不仅是男生,也有很多女生加入了游戏圈.相信现在在看文章的你也玩游戏,虽然爱玩的程度不同,但是至少都是感兴趣的,当然你也知道,手游行业利润高,游戏程序员自然也吃香,能一边赚钱一边玩游戏,岂不是人生一大幸事呢?其实当年我也是这么想的. 为成为游戏程序员而读研 大学的时候学的专业和计算机不太沾边,对学的东西不太感兴趣,每天的生活就是上课开黑打游戏,在大学的男生宿舍

NYOJ 527 AC_mm玩dota

AC_mm玩dota 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 大家都知道AC_mm比较喜欢玩游戏,特别是擅长war3这款经典游戏.某天AC_mm来到了VS平台上 ,准备去虐菜鸟,正巧一个不小心将我们ACM队长虐了 ^_^,我们的队长这下可不高兴了,说要出一道难题让AC_mm难堪一下.题目描述是这样的,给一个正整数n,n在二进制表示的情况下(不含前导0和符号位)有a个1和b个0,求斐波拉契数列的第a*b项对1314520取模后的值ans. 注意(斐波拉契数列:

玩游戏也能文理兼修?游戏成为研究生课程也是醉了

由于上学期开了一门"游戏课",北京大学中文系教授邵燕君共收到约40来篇学生关于游戏体验的报告.而在北京师范大学,则有一门已经连开两年的"游戏研究与游戏化实践"课程,期末作业竟然是要学生设计一款能够解决日常生活问题的游戏化产品-- 文/张书乐 刊载于<人民邮电报>2017年2月25日<乐游记>专栏134期 两门游戏课,一门偏文科.一门偏工科,隐匿在国内两所知名高校里,而且"潜伏期"很长,此事似乎比早前的电子竞技进高校事件更受

为什么电玩非得要和性捆绑?

宅男.腐女群体的庞大,让越来越多的二次元相关事物都开始与"性"联系在一起.其中,作为二次元重要组成部分的电玩行业,更是与"性"紧紧捆绑在了一起.无论是电玩游戏中萌到极点的高中萝莉.火爆身材的御姐,还是扛枪横扫的女汉子,抑或各种cosplay.手办周边等,都必须得以性感位前提.就算是针对腐女,也得有帅到掉渣的男主. 就像当下的国产电视剧,没点感情线在里面搀和,根本就没人看一样,"无性"的电玩,似乎也活不下去.说了这么多,那么电玩为什么和性那么黏糊,

2015 HDU 计算机学院 院赛 1003 玩骰子

Problem Description Nias与Ains都特别喜欢玩骰子,而且都自以为比对方玩得更溜.  终于有一天,他们决定用骰子来一决高下!  一般的骰子玩法已经不足以体现他们的水平了,于是他们自创了一套玩法来PK:首先,每人掷3个骰子:之后,可以选择其中一个骰子重新掷(当然也可以放弃这一步),最后,比较投掷结果的大小,结果大的那方获胜,一样的话为平局.  大小比较规则为:  三个一样数字的骰子称为三条:两个一样数字的骰子称为对子:只有一个数字的骰子成为散牌.三条>对子>散牌.当双方结果