树状数组
silentsaber~
晨意微寒秋渐深,侧畔无事俏佳人
展开
-
三维偏序 CDQ
来看这样一道题 () 描述: 给出 n 个点(x,y,z),请找出最长上升子序列,即对于选择序列中的 i xi 输出最长上升子序列的长度和方案数。 输入: 第一行包含一个整数 n 接下来 n 行,每行有 3 个整数 xi,yi,zi 输出: 输出长度和方案数(方案数对2^30取mod) 输入输出样例: cdq.in cdq.out 3 2 0 0 0 1 1 0 1原创 2016-02-21 10:52:34 · 6672 阅读 · 4 评论 -
bzoj3594&&方伯伯的玉米田
http://www.lydsy.com/JudgeOnline/problem.php?id=3594 考虑dp[i][j]表示以i结尾,拔高了j次的lis. dp[i][j]=dp[k][l]+1枚举前一个最后以什么结尾,拔高了多少次。 这里需要满足a[i]+j-l>=a[k] 然后貌似就出来了:k 但是这些值都不是定值(所以貌似CDQ不能做啊) 然后就上二维树状数组。原创 2016-03-30 15:58:05 · 812 阅读 · 0 评论 -
动态逆序对[CDQ]
CDQ二层试炼: bzoj3295 http://www.lydsy.com/JudgeOnline/problem.php?id=3295 题意大致是: 给你一个序列(一个1~n的排列),每次删掉一个数,求删掉之前的逆序对。 方案1:强行模拟,每次删掉一个一个数,在剩下的数里面用归并求逆序对,复杂度O(mnlogn) 这个复杂度明显是不能接受的 方案2:原创 2016-02-21 20:05:45 · 805 阅读 · 0 评论