SSL_1558&&P2760【科技庄园】

科技庄园

题目

Life是河北衡水中学的学生,他是一个道德极高的学生,他积极贯彻党的十七大精神,积极走可持续发展道路,在他的不屑努力下校领导终于决定让他在衡中的一片闲杂地里种桃,以亲身实践种田的乐趣,厉行节约,告诉人们节约的重要性!
春华秋实,在这个金秋的季节,Life带者他的宠物——PFT到了他的试验田,当他看见自己的辛勤成果时,心里是那个高兴啊!
这时Life对他的宠物PFT说:“你想不想吃桃啊?”
PFT兴奋的说:“好啊!”
Life说:“好吧,但是我只给你一定的时间,你必须在规定的时间之内回到我面前,否则你摘的桃都要归我吃!”
PFT思考了一会,最终答应了!
由于PFT的数学不好!它并不知道怎样才能在规定的时间获得最大的价值,但你是一个好心人,如果你帮助它,你的RP一定会暴涨的!
对于这个可以RP暴涨机会,你一定不会错过的是不是?
由于PFT不是机器人,所以他的体力并不是无限的,他不想摘很多的桃以至体力为0,而白白把桃给Life。同时PFT每次只能摘一棵桃树,摘桃花费时间体力,每棵桃树都可以摘K次(对于同一棵桃每次摘的桃数相同)。每次摘完后都要返回出发点(PFT一次拿不了很多)即Life的所在地(0,0){试验田左上角的桃坐标是(1,1)}。
PFT每秒只能移动一个单位,每移动一个单位耗费体力1(摘取不花费时间和体力,但只限上下左右移动)。

Input

第一行:四个数为N,M,TI,A 分别表示试验田的长和宽,Life给PFT的时间,和PFT的体力。
下面一个N行M列的矩阵桃田。表示每次每棵桃树上能摘的桃数。
接下来N行M列的矩阵,表示每棵桃最多可以采摘的次数K。

Output

一个数:PFT可以获得的最大的桃个数。

Sample Input

4 4 13 20
10 0 0 0
0 0 10 0
0 0 10 0
0 0 0 0
1 0 0 0
0 0 2 0
0 0 4 0
0 0 0 0

【样例解释】
可以摘到1次(1,1)和1次(2,3),体力和时间不满足再摘桃了。

Sample Output

10

数据范围

对于M N TI A
10<=30%<=50
10<=100%<=100
对于K
10<=100%<=100
保证结果在int范围内


解析

又是一道多重背包,转换一下打上一手二进制拆分轻松AC
水绿题
(PS不知道什么是二进制拆分请看这里:SSL_1236【逃亡的准备】)

code:

#include<cstdio>
using namespace std;
int Max(int x,int y){return (x>y)?x:y;}
int Min(int x,int y){return (x<y)?x:y;}
int a[110][110],dp[110],n,m,t,x,y,s;
void ddp(int xx,int yy)//即时背包,使我快乐
{
	for(int i=t;i>=xx;i--)dp[i]=Max(dp[i],dp[i-xx]+yy);
	return;
}
int main()
{
	scanf("%d%d%d%d",&n,&m,&t,&x);
	t=Min(t,x-1);
	for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)scanf("%d",&a[i][j]);
	for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)
	{
		scanf("%d",&x);
		if(x!=0)
		{
			s=1;//位的价值
			while(x>=s)//二进制拆分
			{
				ddp(s*(i+j)*2,s*a[i][j]);
				x-=s;
				s*=2;
			}
			if(x!=0)ddp(x*(i+j)*2,x*a[i][j]);//注意体积要乘2,因为是一个来回
		}
	}
	printf("%d",dp[t]);//输出
	return 0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值