摘要: 题目: 思路:动态规划,递推式子 dp[i][j] = min(dp[i][j], dp[i][k] + dp[k+1][j] + sum[j] - sum[i-1]); dp[i][j]表示合并第i到第j个石子需要的最少代价。sum[i]表示前i个石子的价值,sum[j] - sum[i-1]即合 阅读全文
posted @ 2017-11-15 18:56 ninding 阅读(301) 评论(0) 推荐(0) 编辑
摘要: 题目: 这题看起来难,其实这么多概率啥的都是唬人的。甚至连快速幂都不用就可以解。 解法: n个节点,n-1条边,期望会有一半的边被炸毁(因为总体概率就是50%)。 即(n-1)/2条边被炸毁,这时有(n+1)/2个连通块。(这个不是向下取整的)。 所以f[n] = (n+1)/2*2^(n-1) = 阅读全文
posted @ 2017-11-15 03:12 ninding 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 题目: 这题如果没有时间限制的话暴力可以解,暴力的话时间复杂度大概是O(k*n),1s的话非常悬。 所以我们需要换个思路,我们对每个点预处理四个方向最多能走的步数,这个预处理时间复杂度是O(n*m)。 然后对每个字母点模拟一下即可。总时间复杂度O(n*m+k)。不会超时。 提示:没有满足要求的点时, 阅读全文
posted @ 2017-11-15 02:07 ninding 阅读(338) 评论(0) 推荐(0) 编辑
摘要: 题目: 解法:定义左索引和右索引 1.先让右索引往右移,直到得到所有知识点为止; 2.然后让左索引向右移,直到刚刚能够得到所有知识点; 3.用右索引减去左索引更新答案,因为这是满足要求的子串。 4.不断重复1,2,3。直到搜索到最后,不论怎样都获得不了所有的知识点时跳出。 代码: 阅读全文
posted @ 2017-11-15 00:58 ninding 阅读(352) 评论(0) 推荐(0) 编辑