2013年8月30日
摘要: 题意: 给n(n0;若有dp[k]+f(k,i)> dp[j]+f(j,i),那么一定有dp[i+x] > dp[k]+f(k+1,x+i); 也就是说 k一定不是对应着i的一个可能最优解。 在求解dp[i+x]时,k点就不用枚举了。若有dp[k]+f(k,i) dp[j]+f(j,i+x)。重新思考一下(****)中dp[i]的定义,应用数学归纳法:dp[1]=f(0,1) 或者dp[1]=f(0,1)+dp[0] (dp[0]=0)dp[2]=min{dp[1]+f(2,2),dp[0]+f(1,2)} (刚好对应两种区间拆分方式)假设dp[k]用上式定义也正确,那么 dp[k 阅读全文
posted @ 2013-08-30 21:03 男神发量 阅读(312) 评论(0) 推荐(0) 编辑
摘要: 题目大意: 一个横轴等距且为1的直方图,直方图总长为n,现给出每一列上的纵坐标hi(0 = (n+1-i)*height[i],不管di是多少,它肯定不是最优解 这样思路是不是就很好想了,用一个队列记录所有当前可选的i,又由于队列中的i,j没有height[j] 2 #include 3 #include 4 #include 5 using namespace std; 6 #define f(head,i) height[que[head]]*(i-que[head]) //矩形[que[head],i-1]的面积 7 typedef long long lli; 8 lli h... 阅读全文
posted @ 2013-08-30 13:32 男神发量 阅读(220) 评论(0) 推荐(0) 编辑