hdu 2993 斜率优化DP
2014-05-06 10:47
429 查看
直接看论文即可做
给个论文链接:点击打开链接里面的例二就是
AC代码如下:
给个论文链接:点击打开链接里面的例二就是
AC代码如下:
#include <iostream> #include <cstring> #include <cstdio> #include <algorithm> using namespace std; #define MAX 0x3f3f3f3f double sum[110000], ans; int pos[110000], s, e; int N, K; int getInt(){//没这个这题过不了 char ch = getchar(); while( ch < '0' || ch > '9' ) ch = getchar(); int num = 0; while( ch >= '0' && ch <= '9' ){ num = num * 10 + ch - '0'; ch = getchar(); } return num; } int main(){ while( scanf( "%d%d", &N, &K ) != EOF ){ sum[0] = 0; for( int i = 1; i <= N; i++ ){ int temp = getInt(); sum[i] = temp + sum[i-1]; } s = 0, e = -1; ans = -MAX; for( int i = 0; i + K <= N; i++ ){ while( s < e ){ double k1 = ( sum[i] - sum[pos[e]] ) / ( i - pos[e] ); double k2 = ( sum[pos[e]] - sum[pos[e-1]] ) / ( pos[e] - pos[e-1] ); if( k2 >= k1 ){ e--; }else{ break; } } pos[++e] = i; while( s < e ){ double k1 = ( sum[i+K] - sum[pos[s]] ) / ( i + K - pos[s] ); double k2 = ( sum[i+K] - sum[pos[s+1]] ) / ( i + K - pos[s+1] ); if( k2 >= k1 ){ s++; }else{ break; } } double temp = ( sum[i+K] - sum[pos[s]] ) / ( i + K - pos[s] ); ans = max( ans, temp ); } printf( "%.2lf\n", ans ); } return 0; }
相关文章推荐
- HDU 2993 MAX Average Problem(斜率优化DP)
- hdu 2993 MAX Average Problem (dp斜率优化)
- hdu 2993 MAX Average Problem 斜率优化DP
- 【斜率优化dp】HDU 2993
- HDU 2993 MAX Average Problem(斜率优化DP)
- hdu 2993 简单斜率优化dp 学了一手变态输入法
- hdu 2993 MAX Average Problem(DP+斜率优化入门题)
- HDU 2993 MAX Average Problem【斜率优化dp】
- hdu 2993 MAX Average Problem(DP+斜率优化)
- hdu 2993 MAX Average Problem(DP+斜率优化)
- HDU2993——MAX Average Problem(斜率优化DP)
- HDU 2993 MAX Average Problem 斜率优化
- hdu 3669(斜率优化DP)
- HDU 3045 Picnic Cows 斜率优化DP
- HDU-2829 Lawrence 四边形优化DP 斜率优化
- 文章标题 HDU 3507 :Print Article (斜率dp优化)
- 动态规划DP的斜率优化 个人浅解 附HDU 3669 Cross the Wall
- HDU 3480 Division(斜率优化DP)
- hdu 3480 Division 斜率优化dp
- HDU 3507 Print Article [DP斜率优化]