摘要: /*自己想的方法是O(n^2)的,TLE。后来看得解题报告。思路:从后往前找。将输入的序列按s从小到大排序。记录一个输入数据中最大的数MAX;然后从MAX到1。*/while(i = a[n].s) { dp[i] = max(dp[i], dp[T[n].y+1] + 1); n--;}//最后输出dp[1]; 阅读全文
posted @ 2011-11-06 17:18 AC_Von 阅读(197) 评论(0) 推荐(0) 编辑
摘要: /*dp很明显,参见吴文虎老先生的《程序设计基础》。不过这道题卡内存,直接开1000*1000的数组会超的。然后看到Discuss里有人说dp[2][1000]就可以,然后就按着这个思路写。if(diagonally[i-1][j-1]) dp[1][j] = min (min (dp[0][j], dp[1][j-1]) + 100, dp[0][j-1] + 100*sqrt(2.0));else dp[1][j] = min(dp[0][j], dp[1][j-1]) + 100;每计算出一行将dp[0][...] = dp[1][...];最后输出dp[1][m+1];My C... 阅读全文
posted @ 2011-11-06 13:25 AC_Von 阅读(217) 评论(0) 推荐(0) 编辑