POJ 2018 Best Cow Fences(斜率优化+DP)
2012-09-03 16:00
621 查看
题目链接
和HDU 2993一样,两个题都很纠结啊。这个题调了好几天。。。终于在多次WA终于AC了。各种错误,判断条件写错,dp数组的初始值。HDU那个题还要手写读入,890ms水过了。这个题放到图上很直观了,网上有各种解释。。。
和HDU 2993一样,两个题都很纠结啊。这个题调了好几天。。。终于在多次WA终于AC了。各种错误,判断条件写错,dp数组的初始值。HDU那个题还要手写读入,890ms水过了。这个题放到图上很直观了,网上有各种解释。。。
#include <stdio.h> #include <string.h> #include <stdlib.h> #define N 500001 __int64 dp ,que ,p ,sum ; int i,m; double slope(int x,int y) { return ((i+m-y)*sum[x-1]-(i-x+m)*sum[y-1])*1.0/(x-y); } int main() { int n,str,end; __int64 max; scanf("%d%d",&n,&m); for(i = 1; i <= n; i ++) { scanf("%I64d",&p[i]); sum[i] = p[i]+sum[i-1]; } str = end = 0; for(i = 1; i <= n-m+1; i ++) { dp[i+m-1] = 1000*(sum[i+m-1] - sum[i-1])/m; while(str < end&& sum[i+m-1]>= slope(que[str],que[str+1])) str ++; if(dp[i+m-1] < 1000*(sum[i+m-1] - sum[que[str]-1])/(i+m-que[str])) dp[i+m-1] = 1000*(sum[i+m-1] - sum[que[str]-1])/(i+m-que[str]); while(str < end&&slope(que[end-1],que[end]) >= slope(que[end],i)) end --; end ++; que[end] = i; } max = 0; for(i = m; i <= n; i ++) if(max < dp[i]) max = dp[i]; printf("%I64d\n",max); return 0; }
相关文章推荐
- POJ 2018 Best Cow Fences + UVA Live 4726 Average 斜率优化DP
- poj 2018 Best Cow Fences dp+单调队列优化
- POJ 2018 Best Cow Fences (斜率优化入门)
- poj 动态规划DP - 2018 Best Cow Fences
- Poj 2018 Best Cow Fences(分数规划+DP&&斜率优化)
- POJ - 2018 Best Cow Fences(DP)
- poj 2018 Best Cow Fences USACO历年月赛 (分数规划+DP)
- 【斜率】【poj 2018】Best Cow Fences
- POJ-2018 Best Cow Fences(二分加DP)
- POJ-2018 Best Cow Fences(二分加DP)
- poj2018——Best Cow Fences
- POJ 2018 Best Cow Fences
- POJ2018 Best Cow Fences
- POJ 2018 Best Cow Fences
- POJ 2018 Best Cow Fences
- POJ 2018 Best Cow Fences 笔记
- [USACO2003][poj2018]Best Cow Fences(数形结合+单调队列维护)
- Best Cow Fences POJ - 2018(经典二分)
- poj 2018 Best Cow Fences
- POJ 2018 Best Cow Fences