欢迎访问我的个人网站==》 jiashubing.cn
上一页 1 ··· 30 31 32 33 34 35 36 37 38 ··· 40 下一页
摘要: Chopsticks题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=234题目大意:给定n个筷子的长度,取k+8套筷子,每套有3个,长度分别为A,B,C。要求k+8套筷子中(A-B)^2的和最小,输出这个最小值。分析:题目中筷子长度是非降序排列的,所以最小的两个A和B一定是相邻的。先不考虑筷子C,只要留着就行。 令dp[i][j]表示从 j 个筷子中取 i 套筷子的最优值。 dp[i][j] = min {dp[i][j-1] , dp[i-1][j-1] | (n - j > 3*(k - i))剩下的筷子 阅读全文
posted @ 2013-08-15 02:56 贾树丙 阅读(666) 评论(0) 推荐(0)
摘要: Common SubsequenceTime Limit:2 Seconds Memory Limit:65536 KBA subsequence of a given sequence is the given sequence with some elements (possible none) left out. Given a sequence X = another sequence Z = is a subsequence of X if there exists a strictly increasing sequence of indices of X such that... 阅读全文
posted @ 2013-08-15 02:40 贾树丙 阅读(327) 评论(0) 推荐(0)
摘要: To the MaxTime Limit:2 Seconds Memory Limit:65536 KBProblemGiven a two-dimensional array of positive and negative integers, a sub-rectangle is any contiguous sub-array of size 1 x 1 or greater located within the whole array. The sum of a rectangle is the sum of all the elements in that rectangle. In 阅读全文
posted @ 2013-08-03 15:56 贾树丙 阅读(333) 评论(0) 推荐(0)
摘要: 题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=76题目大意:在一个DNA上,给定许多基因的起始位置和结束位置,求出这条链上最多同时存在多少基因?并依次输出选择基因的序列号。Sample Input6340 500220 470100 300880 943525 556612 7763705 773124 337453 6650Sample Output3 1 5 6 42 3 1分析:有两种思路。1.最长上升子序列+路径打印;2.贪心法1: 1 //dp[i] = max{0,dp[j]}+1,j 6 # inc 阅读全文
posted @ 2013-08-03 15:38 贾树丙 阅读(420) 评论(0) 推荐(0)
摘要: 题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=25题目大意:机器运送n个木条,每个木条有一个长度和重量。运送第一根木条需要1分钟的准备时间,接下来如果后一根木条的长度和重量都大于等于前一根木条,则不需要准备时间,否则需要1分钟的准备时间,求运完所有木条最少时间。 比如有5根木条,长度和重量分别是(4,9), (5,2), (2,1), (3,5), (1,4),则需要2分钟就可运完第1分钟运(1,4), (3,5), (4,9);第2分钟运 (2,1), (5,2)分析:快速排序加贪心。首先按照木条长度从小到大排 阅读全文
posted @ 2013-08-02 15:19 贾树丙 阅读(619) 评论(0) 推荐(1)
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4627题目大意:给定一个整数n(2 2 # include 3 # include 4 using namespace std; 5 __int64 n; 6 int main() 7 { 8 int T; 9 scanf("%d",&T);10 while(T--)11 {12 scanf("%I64d",&n);13 __int64 temp = n/2;14 if(n==2)15 prin... 阅读全文
posted @ 2013-08-02 09:44 贾树丙 阅读(238) 评论(0) 推荐(0)
摘要: Pieces题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4628题目大意:给定一个字符串s,如果子序列中有回文,可以一步删除掉它,求把整个序列删除所需要的最少步数。比如:axbyczbea 可以一次删除掉abcba 得到xyzeSample Input2aaabbSample Output12分析:这道题目刚出来时居然有超过一半的人AC,是我太弱了吗? 到底不会,先贴出标程,再慢慢消化好了 集合上的动态规划。。。和点集配对很像,这里我先求出所有的回文串,然后dp。 设d[S]表示将集合S中的字母删除需要多少步,结果就是d[(1 2 #... 阅读全文
posted @ 2013-08-02 09:21 贾树丙 阅读(293) 评论(0) 推荐(0)
摘要: 题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=13题目大意:说的是有三种不同的装备,分别是头盔,盔甲,战靴需要运输,每种装备拥有不同的重量,体积,以及防御能力.当三种装备按照一定的数量规定组合成套装时,套装可以发挥处更强的攻击能力.然后有n个运输车,每个车能够运送的重量和体积有限制,现在问如何给这个n个运输车分配运送任务(即每个运输队运多少头盔,多少盔甲,多少战靴) 可以获得总的防御值最大。输入描述:第一行是运输车的数量n。接下来是第1行是每个头盔的重量w1、体积s1、防御能力d1;第2行是每个盔甲的重量w2、体 阅读全文
posted @ 2013-07-30 02:03 贾树丙 阅读(884) 评论(0) 推荐(0)
摘要: 11年北京现场赛的题目。概率DP。公式化简起来比较困难。。。。而且就算结果做出来了,没有考虑特殊情况照样会WA到死的。。。。去参加区域赛一定要考虑到各种情况。像概率dp,公式推出来就很容易写出来了。 1 /* 2 HDU 4098 3 题意:有n个人排队等着在官网上激活游戏。Tomato排在第m个。 4 对于队列中的第一个人。有一下情况: 5 1、激活失败,留在队列中等待下一次激活(概率为p1) 6 2、失去连接,出队列,然后排在队列的最后(概率为p2) 7 3、激活成功,离开队列(概率为p3) 8 4、服务器瘫痪,服务器停止激活,所有人都无法激活了。 9 求服务器瘫痪时Tomato在队列中的 阅读全文
posted @ 2013-07-29 23:56 贾树丙 阅读(346) 评论(0) 推荐(0)
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3008题目大意:人有100血和100魔法,每秒增加 t 魔法(不能超过100)。n个技能,每个技能消耗cost[i]魔法值,造成hurt[i]伤害。普通攻击不消耗魔法,每秒1伤害。boss有100血,每秒对人造成q伤害。每秒内,人先攻击,boss后攻击。问最少多少秒杀死boss?Sample Input4 2 2510 520 1030 2876 704 2 2510 520 10 30 2877 700 0 0Sample Output4 My god分析:普通攻击可以看做是魔法消耗为0,伤害为1 阅读全文
posted @ 2013-07-29 13:56 贾树丙 阅读(272) 评论(0) 推荐(0)
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3127题目大意:将一块长x宽y的矩形布料,剪成小的矩形(每个给定的小矩形都对应一个价值),使得所有小矩形产生的价值最大。Sample Input1 2 4 4 2 2 2 3 3 9Sample Output9分析:这题可以可以看做完全背包问题来接。因为:1、每种矩形布可以剪任意多个;2、题目给出的矩形布可以看做背包容量;3、每个矩形布都有一个价值关键在于找到状态转移方程:设dp[i][j]为长为i宽为j的矩形布的最大价值,下面的图一可以看做待剪的布,图二为小布的尺寸对于这个问题可以两种如下剪布方案 阅读全文
posted @ 2013-07-28 21:44 贾树丙 阅读(384) 评论(0) 推荐(0)
摘要: 4类典型的动态规划方程如果子问题数目为O(nt),且每个子问题需要依赖于O(ne)个其他子问题,称这个问题为tD/eD的。1D/1D型:定义一个实函数w(i,j)(1<=i<j<=n),已知D[0],状态转移方程为 E[i] =min{D[i]+w(i,j)},0=<i<j,1=<j<=n————最长上升子序列2D/0D型:已知D[i,0]和D[0,j] , 状态转移方程为: E[i,j]=min{D[i-1,j]+xi,D[i,j-1]+yi,D[i-1,j-1]+zi,j}————最长公共子序列2D/1D型:————多源最短路径2D/2D型:——— 阅读全文
posted @ 2013-07-27 15:50 贾树丙 阅读(699) 评论(0) 推荐(1)
摘要: String to Palindrome题目大意:给出一个字符串s,现在可以进行3种操作(添加字母,删除字母,替换字母),将其变成回文串,求出最少的操作次数。比如abccda,可以用删除操作,删除b,d两步可变成回文;但如果用替换操作,把b换成d则只需要1步。分析:刚开始我一直考虑它是否具有最优子结构性质,直到现在,还是不明白为什么可以用动态规划来做,大神若是看见,还望指教。 由于添加字母和删除字母的效果是一样的,因此我们这里就只进行删除和替换操作。令dp[i][j]表示从第 i 到第 j 个字母变成回文所需要最少的操作数。 转移方程为:当是s[i]==s[j]时,dp[i][j] = d.. 阅读全文
posted @ 2013-07-26 18:22 贾树丙 阅读(769) 评论(0) 推荐(0)
摘要: 题目大意:输入一个由小写字母组成的字符串,你的任务是把它划分成尽量少的回文串。比如racecar本身就是回文串;fastcar只能分成7个单字母的回文串;aaadbccb最少可分成3个回文串:aaa、d、bccb。字符串的长度不超过1000。分析:令dp[i]表示从第1个到第 i 个字符所组成的最少回文串数。 我们考虑如果前k个字符构成了1个回文,那么前k+1个字符最多构成2个回文,如果这些字符都相同,那么也只是1个回文串。所以如果第 j 个字母到第 i 个字母能构成回文,那么dp[i] = min(dp[i],dp[j-1]+1);初始条件是:dp[i]=i;代码如下: 1 # inclu. 阅读全文
posted @ 2013-07-26 16:38 贾树丙 阅读(348) 评论(0) 推荐(0)
摘要: 连连看Time Limit: 20000/10000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 13730Accepted Submission(s): 3579Problem Description“连连看”相信很多人都玩过。没玩过也没关系,下面我给大家介绍一下游戏规则:在一个棋盘中,放了很多的棋子。如果某两个相同的棋子,可以通过一条线连起来(这条线不能经过其它棋子),而且线的转折次数不超过两次,那么这两个棋子就可以在棋盘上消去。不好意思,由于我以前没有玩过连连看,咨询了同学的意 阅读全文
posted @ 2013-07-26 15:06 贾树丙 阅读(378) 评论(1) 推荐(0)
上一页 1 ··· 30 31 32 33 34 35 36 37 38 ··· 40 下一页