ACM-(技巧)离散化
Nicetomeetu-
没有
展开
-
POJ 2528 线段树 + 延迟标记 + 离散化
通过这道题学到了很多知识,总结了以后有以下三点: 1.线段树的创建只是一个初始化的过程,如果初始化的值都为0的话,只需要memset,根本无需写一个递归建树的过程 2.模板中的pushup函数也不是必须的 3.离散化,当点的数目很少,但是点的值又很大的时候,可以考虑离散化,既可以降低复杂度,又不至于爆内存。 本题就是不断的用所给区间染色,最后再查询有多少种颜色就可以了。思路无需赘述,不过代原创 2016-11-22 11:09:40 · 359 阅读 · 0 评论 -
HDU - 4352 XHXJ's LIS 数位dp+离散化
题目链接:XHXJ's LIS 初看这道题目首先回忆起LIS的O(nlogn)的做法,于是想到定义状态dp[pos][LIS*][k],pos代表当前数位,LIS*代表由前缀构造的LIS数组,k代表最长上升子序列的长度。 问题来了,一个数组肯定不能作为下标,所以我们要把这个数组转化成数字。 注意到数组的每个元素取值范围都是0~9,数组的长度最大为10,所以一个最简单的想法就是把数组转化成一个原创 2017-07-05 17:19:21 · 461 阅读 · 0 评论 -
CodeForces - 55D Beautiful numbers 数位dp+离散化
题目链接:Beautiful numbers 很容易想到定义状态为dp[pos][sum][lcm]原创 2017-07-04 13:15:55 · 499 阅读 · 0 评论 -
POJ 3666 Making the Grade dp + 离散化
定义状态为前i个数字形成的以数字j结尾的单调序列的最小花费 有如下状态转移方程 经过化简可得 可以用滚动数组实现 时间复杂度是O(N*1e9) 空间复杂度是O(1e9) 两个复杂度都太高了。注意到n远远小于1e9,所以想到离散化。(当然我是想不到) 离散化的方法就是将n个数字和1-n对应起来 我们dp的时候其实是不用dp出1e9的所有数据的,我们只需要dp出原创 2017-03-20 01:29:37 · 421 阅读 · 0 评论