2011年4月23日

最少拦截系统

摘要: 这道题我就悲剧啦,根本就没有理解清楚题意,看了牛人的,才突然明白过来。高手链接:http://www.loveqiuqiu.com/?p=498 阅读全文

posted @ 2011-04-23 23:59 more think, more gains 阅读(133) 评论(0) 推荐(0) 编辑

Bone Collector

摘要: 典型的01背包问题,百度百科里面有很好的解释,我就不多说了,状态转移方程,dp[i][j],i表示bone数量,j表示体积,dp[i][j]表示数量i,体积j骨头的最大价值,dp[i][j]=max(dp[i-1][j],dp[i-1][j-v[i]]+w[i]);View Code 1 #include<stdio.h> 2 #include<string.h> 3 #include<stdlib.h> 4 //#include<debug.h> 5 int A[1010][1002],c[1010],v[1010]; 6 int max(in 阅读全文

posted @ 2011-04-23 23:54 more think, more gains 阅读(205) 评论(0) 推荐(0) 编辑

I NEED A OFFER!

摘要: 这道题其实质是一个01背包问题,dp[i][j]表示选择i个学校时,花费j,不能得到一份officer的概率,其状态转移方程为dp[i][j]=min(dp[i-1][j],dp[i-1][j-cost[i]]*(1-p[i]).)刚开始时我用的是二维数组,结果MLE,然后改为一维数组,AC了......两种情况代码如下:#include<stdio.h>#include<string.h>#include<stdlib.h>int cost[1010];float dp[10010];float p[1010];const int inf=0x7fffff 阅读全文

posted @ 2011-04-23 23:42 more think, more gains 阅读(196) 评论(0) 推荐(0) 编辑

搬寝室

摘要: 这道题我刚开始就理解错题意了,以为只要把给定的物品重量从小到大排序就可以了,然后果断提交,果断wrong answer....纠结了发久,最后才明白这还是一个动态规划问题...dp[i][j]表示前i件物品,选取j对的最小疲劳度,而dp[i][j]又由dp[i-2][j-1]+(c[i]-c[i-1])*(c[i]-c[i-1])和dp[i-1][j]对决定......因此动态方程为:dp[i][j]=min((dp[i-2][j-1]+(c[i]-c[i-1])*(c[i]-c[i-1])),dp[i-1][j]);做动态规划的题目关键是找到状态转移方程:代码如下:#include<s 阅读全文

posted @ 2011-04-23 23:29 more think, more gains 阅读(146) 评论(0) 推荐(0) 编辑

导航