首页 > 代码库 > 【HDOJ】2195 Monotone SE Min
【HDOJ】2195 Monotone SE Min
简单DP。将[0,1]的浮点数离散化为[0,1000]的整数。最后再除以1000^2.
1 /* 2195 */ 2 #include <cstdio> 3 #include <cstring> 4 #include <cstdlib> 5 6 #define MAXN 1000 7 #define MAXL 205 8 #define INF 0xfffffff 9 10 int dp[MAXL][MAXN+5];11 char s[MAXL];12 13 int main() {14 int len;15 int i, j, k;16 int bi, tmp;17 double ans;18 19 #ifndef ONLINE_JUDGE20 freopen("data.in", "r", stdin);21 #endif22 23 while (scanf("%s", s) != EOF) {24 len = strlen(s);25 bi = (s[0]==‘0‘) ? 0:MAXN;26 for (j=0; j<=MAXN; ++j) {27 dp[0][j] = (j-bi)*(j-bi);28 }29 for (i=1; i<len; ++i) {30 bi = (s[i]==‘0‘) ? 0:MAXN;31 tmp = INF;32 for (j=0; j<=MAXN; ++j) {33 if (dp[i-1][j] < tmp)34 tmp = dp[i-1][j];35 dp[i][j] = tmp + (j-bi)*(j-bi);36 }37 }38 tmp = INF;39 i = len-1;40 for (j=0; j<=MAXN; ++j)41 if (dp[i][j] < tmp)42 tmp = dp[i][j];43 ans = tmp / 1000000.0;44 printf("%.3lf\n", ans);45 }46 47 return 0;48 }
【HDOJ】2195 Monotone SE Min
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。