摘要:
通过子树大小和树大小的关系进行重构,复杂度均摊logn。 bzoj3600 没有人的算术 题目大意:一开始只有0,每次可以把两个数x,y组成(x,y)的形式作为新数,数(a,b)(x,y)的比较以第一维为第一关键字、第二维为第二关键字。操作有:把l和r上的数组成新数赋给k,求[l,r]中最大数的下标 阅读全文
摘要:
bzoj3591 最长上升子序列(!!!) 题目大意:求1~n的排列满足其中一个最长上升子序列是给定数列的个数。 思路:考虑nlogn单调栈求lis,可以用gi[i][j]表示栈中状态是i的时候加入j之后栈的状态,可以n^2*2^n预处理。然后考虑dp,fi[i]表示状态是i的dp值,i是个三进制数 阅读全文
摘要:
多维维护问题,每层换一维进行统计。 bzoj4066 简单题 题目大意:给(x,y)+A,求(x1,y1)~(x2,y2)的权值和。 思路:kd-tree,但这道题目中重建是特判的。 #include<iostream> #include<cstdio> #include<cstring> #inc 阅读全文
摘要:
POJ2912 Rochambeau 题目大意:(剪子包袱锤~~)不过,多了个美丽的judge,可以随便出任何种手势。判断能否根据已知的游戏的结果选出judge。。。思路:基本用食物链,枚举每个小孩为judge,判断他为judge时在第几句话出错falt[i](即到第几句话能判断该小孩不是judge 阅读全文
摘要:
Day1 T1 储能表 题目大意:已知n、m、k,求sigma(i=0~n-1,j=0~m-1)max((i^j)-k,0)。 思路:数位dp。fi[i][a][b][c]表示到第i位,和n、m的关系分别是a、b(0表示<,1表示=),和k的关系(0表示<,1表示=,2表示>)。 #include< 阅读全文
摘要:
左偏树 bzoj4003 城池攻占 题目大意:一棵树,每个点有一个防御值。m个武士,有攻击力和起始的位置,攻下一个点后会向父亲进攻,攻击力大于等于一个点的防御力就可以攻下,否则死亡。武士攻下每个点后攻击力会变化,加上或者乘上一个数(乘的数保证非负)。问每个城市死亡的武士个数和每个武士攻下的点。 思路 阅读全文
摘要:
bzoj2440 完全平方数 题目大意:求第k个不是完全平方数倍数的数(1不算完全平方数)。 思路:二分+容斥+莫比乌斯函数。我们可以二分x,看1~x中有几个不是完全平方数倍数的数。求这个的过程是容斥原理,我们可以用所有的数-有1个质数(分解质因数后的,下同)平方了的+有2个的-有3个的...,然后 阅读全文
摘要:
bzoj4367 假期(!!!) 题目大意:有n个点在一条直线上,每一时刻可以从i走向i+1或i-1,也可以停在i参观得到wi的收益,每个点只能贡献一次收益,求0时刻在st、m时刻最大收益。 思路:f[i]、g[i]、fi[i]、gi[i]分别表示经过i时刻从st向右、向左、向左再回st、向右再回s 阅读全文
摘要:
匈牙利算法 bzoj1854 游戏 题目大意:给定n个武器,每个武器有两个属性值,每个武器用一次,求最长连续递增序列。 思路:如果把属性值看作一排点,武器看作一排点,就是二分图最大匹配了。在匈牙利中有个visit数组,如果每次赋值的话,会tle,这里有一种很好的做法,就是把visit改成int,每次 阅读全文
摘要:
bzoj3676 回文串 题目大意:给定一个字符串,求其中某种回文串的长度*出现次数的最大值。 思路:建立后缀自动机,用manachur求出本质不同的回文串(也就是比较使pp[i]+1的时候),然后在后缀自动机上的相应节点往上找fa,统计siz。 (这道题目中manacher不能加字符(会mle), 阅读全文