LeeBlog

导航

上一页 1 2 3 4 5 6 7 ··· 19 下一页

2011年5月18日 #

多重背包O(N*V)算法详解(使用单调队列)(转载)

摘要: 多重背包问题:有N种物品和容量为V的背包,若第i种物品,容量为v[i],价值为w[i],共有n[i]件。怎样装才能使背包内的物品总价值最大?网上关于“多重背包”的资料倒是不少,但是关于怎么实现O(N*V)算法的资料,真得好少呀,关于“单调队列”那部分算法,又没说明得很清楚,看了几遍没看懂原理,只好自己动脑去想怎么实现O(N*V)算法。若用F[i][j]表示对容量为j的背包,处理完前i种物品后,背包内物品可达到的最大总价值,并记m[i] = min(n[i], j / v[i])。放入背包的第i种物品的数目可以是:0、1、2……,可得:F[i][j] = max { F[i - 1] [j – 阅读全文

posted @ 2011-05-18 14:26 LeeBlog 阅读(384) 评论(0) 推荐(0) 编辑

HDU 2844 Coins 多重背包

摘要: 这题看着我第一感觉是母函数,但是据说母函数会TLE,就果断多重背包了,而这里用多重背包做,明显不能直接把dp[n]输出来,那样结果是错的,那怎么才能找到种类呢。if( dp[i] ) ++c;??????这样行吗???? 不行,这是后要想到dp[i]的含义,dp[i]代表着在重量i时能找到的最大价值,而这里的重量和价值都是钱,所以就有很方便的一个地方了,dp[i]中最多能装下i的话那么肯定i能够选到,所以就有判断条件了if( dp[i] == i ) ++c;直接上代码吧#include<stdio.h>#include<string.h>//#define max( 阅读全文

posted @ 2011-05-18 10:51 LeeBlog 阅读(187) 评论(0) 推荐(0) 编辑

HDU 2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活 多重背包

摘要: 下面是以简短代码,但是我觉得还是标准版的好#include<stdio.h>#include<string.h>int n,m,v[105],w[105],num[105],dp[105],ma;int max( int a,int b ){ return a > b ? a : b;}int main( ){ int t; scanf( "%d",&t ); while( t-- ) { ma = 0; memset( dp,0,sizeof( dp ) ); scanf( "%d%d",&n,&m 阅读全文

posted @ 2011-05-18 01:39 LeeBlog 阅读(267) 评论(0) 推荐(0) 编辑

2011年5月17日 #

HDU 1171 Big Event in HDU 多重背包

摘要: 这题是我第一次写多重背包,1RE,1WA,#include<stdio.h>#include<string.h>int n,v[55],num[55],dp[250000],sum,all;int max( int a,int b ){ return a > b ? a : b;}int main( ){ while( scanf( "%d",&n ),n > 0 ) { sum = 0; for( int i = 0; i < n; ++i ) scanf( "%d%d",&v[i],& 阅读全文

posted @ 2011-05-17 23:47 LeeBlog 阅读(263) 评论(0) 推荐(0) 编辑

分糖果 二进制不进位相加

摘要: 那天比赛时还有一题,分糖果。当时看了没神马头绪,就没看了。这是地址http://218.75.208.59:8084/acmhome/problemdetail.do?&method=showdetail&id=1061分糖果时间限制(普通/Java):1000MS/3000MS 运行内存限制:65536KByte总提交:14 测试通过:11描述肖恩和帕特里克是兄弟,他们从他们的父母那里得到了很多糖果。每一块糖具有一个的正整数的价值,孩子们希望分他们得到的糖果。首先,肖恩将这些糖果分成两堆,并选择一堆给帕特里克。然后,帕特里克将尝试计算每堆的价值,其中每堆的价值是在那堆的糖果价 阅读全文

posted @ 2011-05-17 13:54 LeeBlog 阅读(1274) 评论(0) 推荐(0) 编辑

我素故我在

摘要: 这是我们学校本届的校赛题目,链接:http://218.75.208.59:8084/acmhome/problemdetail.do?&method=showdetail&id=1060题目描述:我素故我在时间限制(普通/Java):1000MS/3000MS 运行内存限制:65536KByte总提交:20 测试通过:11描述有这样一种素数叫纯素数(YY出来的名字),当它是一个多位数的时候,你把它的末位去掉之后余下的数依然是一个素数。比如说2393,2393 本身是一个素数,它的末位去掉之后,余下的是239。239 是一个素数,它的末位去掉之后,余下的是23 。23是一个素数 阅读全文

posted @ 2011-05-17 13:09 LeeBlog 阅读(463) 评论(1) 推荐(0) 编辑

ACM 入门计划

摘要: acm本文由swellspirit贡献ACM• I can accept failure. but I can't accept not trying.Life is often compared to a marathon, but I think it is more like being asprinter; long stretches of hard work punctuated by brief moments in which weare given the opportunity to perform at our best. If someone gets the 阅读全文

posted @ 2011-05-17 11:47 LeeBlog 阅读(3025) 评论(4) 推荐(3) 编辑

2011年5月16日 #

校赛比完。。

摘要: 这次校赛完了。感觉还可以。7道题。 不过那F真的很遗憾,我打表都打出来了。用的筛选法。不过竟然输出格式错误。一直wa。最后一个小时竟然没做出一题。。 好吧。。 没能八题 我悲剧了。。 昨天比完后今天真感觉很累。。 睡觉吧。。。。 下周的湘潭赛继续奋斗啊。。这周把背包九讲看了。把背包AK吧。。 恩。。下周去接受湘潭的虐待。。 我也要像小雨一样做DP,成为DP之神。。 小雨这次上海赛拿奖了。银奖。。 好牛逼啊 。。 神马时候我也能在区域赛上拿个奖啊。。。期望中。睡觉去 。。。。 阅读全文

posted @ 2011-05-16 12:03 LeeBlog 阅读(174) 评论(0) 推荐(0) 编辑

2011年5月14日 #

HDU 1114 Piggy-Bank 完全背包入门

摘要: 这题题意大致是一个蓄钱小猪,空质量w1,装了钱的质量w2,然后给出各种钱的价值及重量,问着个钱罐至少要存多少钱这题是完全背包入门的一经典啊,现在我还不是太理解完全背包。下面说说我的理解吧。完全背包是要把每种都尽量往里面放,每种都放到使总值最大,(为神马这样放就能把每种放到最大呢?客观请继续看)最后看所有种类全部放进去,并且放到使总值最大,好吧。至于为神马从后面往前面放就是0-1背包呢,即只能放一个,并且是依靠前面的呢,因为如果从w[i]-W,在0-1背包中,当W-w[i]>w[i]时,就有可能在dp[W]放w[i]时就已经把w[i]放进去了,即完全背包,这样就重复放了w[i],这显然与0 阅读全文

posted @ 2011-05-14 00:02 LeeBlog 阅读(594) 评论(0) 推荐(0) 编辑

2011年5月13日 #

HDU 2094 产生冠军

摘要: 这个题开始一看是并查集,后来改了很久,怎么改也改不过,只得翻大牛的代码,原来大牛们都是这样写的,左边的为胜利者,有边的为失败者,如果左边的胜利者只有一个没在右边出现过,那么这个就是产生的冠军,否则产生不了、#include<stdio.h>#include<string.h>int set[1005],n,f,c,num[1005];char ch[1005][20];int search( char str[] ){ for( int i = 1; i < c; ++i ) if( !strcmp( str,ch[i] ) ) return i; strcpy( 阅读全文

posted @ 2011-05-13 11:40 LeeBlog 阅读(690) 评论(0) 推荐(0) 编辑

上一页 1 2 3 4 5 6 7 ··· 19 下一页