hdu 1199总结:关于这道题,就不贴代码了,网上有的是大神的代码,主要是刚接触离散化,有一点学习心得。
我们的老师曾经这么说过,对于一道题,刚入手时最好是有一个暴力的想法,也就是最朴素的想法,然后评估时间复杂度,会超时,就要用其他算法或者数据结构优化这个最暴力的解法。
对于这道color the ball 也是一样,最朴素的想法,开一个10^9的数组,置为0,对于后面的每一段w[a,b],就全部置为1,每一段的b[a,b]置为0,显而易见,这样无论是时间复杂度还是空间复杂度都无法承受得起,那么就在此基础上进行优化,可以看到的是,10^9的数组里有用的数其实就是后面询问的每一个区间的端点,区间中的的值都是没有用的,浪费了巨大的空间,因此可以进行一个压缩,只需按端点相对大小排序,而至于那些区间的长度,用个结构体连同两个端点值保存起来就行了。
我们也可以看成是一个映射,比如所有的左端点为a1,a2,....对于某一个a,在f对应法则下,f(a)为a在这这个线性表中按从小到大的排序