08 2016 档案
摘要:整体二分可以算作是普通二分的进化版。普通二分可以解决多个操作,单个询问。时间复杂度为O(所有操作的复杂度f(n)*logC), C为需要二分的答案范围。 那么Q个询问呢?显然所有操作的复杂度是 > O(n)的,每个询问所有操作来一遍,那么就变成O(Q*所有操作的复杂度f(n)*logC), 复杂度就
阅读全文
摘要:课件链接 CDQ分治 [BOI2007]MOKIA 题意:一个2000000*2000000的棋盘,每个格子有一个数,维护两种操作: ADD x, y: a A[x, y] += a; QUERY x0, y0, x1, y1: 询问矩阵内的和。 CDQ分治时按x维排序使用扫描线,y维使用树状数组。
阅读全文
摘要:关于CDQ分治,首先需要明白分治的复杂度。 T(n) = 2T(n/2)+O(kn), T(n) = O(knlogn) T(n) = 2T(n/2)+O(knlogn), T(n) = O(knlog^2n) T(n) = 2T(n/2)+O(k), T(n) = O(kn) 那么我们要处理[l,
阅读全文
摘要:题意:共n张无中生有,m张攻击牌。每张攻击牌攻击力已知,敌方有p点血。随机洗牌。游戏开始,己方抽取一张手牌,若是无中生有则可再抽两张牌。求能在第一回合内将敌方杀死的概率。 n+m <= 20, p <= 1000; 很明显,与卡特兰数有关,原先栈内数量为1,抽到无中生有即入栈,否则出栈。 枚举攻击牌
阅读全文
摘要:DAG图。 f[i][j][k] = ∑f[ii][jj][kk],ii,jj,kk分别为i,j,k的直接后继 时间复杂度是O(n^6)的,需要优化。 另开一维枚举当前要走的人。 我们假定先走k,再走j,最后走i,目前在i,j,k。 f[i][j][k][0]表示k,j,i走完下一轮继续走k,j,i
阅读全文