HDOJ 1556 Color the ball

来源:互联网 发布:java heap的使用 编辑:程序博客网 时间:2024/05/28 11:30

//HDOJ 1556
//原本以为是线段树 整体优化 提交两次还是TLE
//线段树 也应该能过 可能是我写得代码挫了
//后来发现可以通过递推得到
//开辟三个数组空间,一个记录每个点作为涂色起点的次数,一个记录每个点作为涂色终点的次数
//还有一个数组num,保存计算得到的每个点涂色次数
//可以有两种递推思路 一种自上而下 一种自下而上
//例如自上而下 首先保存num[1]=start[1]; 因为1是边界点 所以涂色次数就等于作为起点次数
//然后看 i=2 如果 i=1 时候start[1]==end[1] 说明没有跨越1 2 的涂色过程
//也就是说,这时候的 start[2]就是 num[2]
//否则 如果i=1 时候 start[1]!=end[1] 说明有num[1]-end[1] 次涂色不是以1 结束的,那么至少是以2结束的
//所以 i=2 位置作为终点或者中间点涂色进行了num[1]-end[1] 次,再加上作为起点位置的start[2]次,就是总共的涂色次数
//其实另一种自下而上也是同样的思路,递推过程是逆序的
//code

原创粉丝点击