摘要:
zjoi2013的题终于做完了,拖了好久,觉得这份题质量挺高的,而且代码量都不是很大,zj的题还是比较注重思路的,而且都可以有不同的解法,甚至可以骗分= =。这个题我一开始只能想出N^4的,后来参考某神的题解发现我多出来的那一维完全是没有用的......但是我还是想总结一下思路,毕竟这种2D的DP做的比较少,以免以后忘掉。首先经过一些列的简化我们发现这个题实际就是求个凹凸不平的形状中的最大值,也就是一堆高度参差不齐的子矩形的和,这些子矩阵同底,高满足一高一低,一共要这样变2k次,也就是一共有2*k+1个矩形。设f[i][j][k][h]表示以[i][j]为右下角的子矩阵,是当前的第k个子矩阵, 阅读全文
摘要:
后缀自动机......慢慢体会ing。这个题的题意是给你一堆数字串,让你去重以后问所有字串代表的数字的和(mod 2012)这个题n是10^6级别的,所以要充分利用重复字串的性质。这么考虑,当有许多子串的都添一个末位数字K时,这些子串的和就是原来字串的和*10+子串个数*k。其实这些字串在自动机里面对应的就是一个状态,当这些状态都存在一个指向Q的转移时,就可以把这些状态的sum累积到Q上。这充分利用SAM自动机中转移函数的特点(tran[p][w]表示在p状态后面添加一个字符w,将成为哪一个状态的后缀)。这样想的话,每一个状态上累加的sum实际上是这个状态所有后缀的sum和,而这些后缀的共同特 阅读全文
摘要:
由于本人傻×,给bzoj上贡献了满满一屏的wa,真是对不住了......这个题其实挺水的,我就简单一说吧。可以看出选的原材料组成的凸包一定要包住需求的材料组成的凸包,那么我们枚举任意两个材料的点,如果他们的向量在所有材料组成的点的同侧的话,就给这两个点连一条1的边,否则连一条正无穷的边,那么用floyd跑一边最小环 就行了。注意特殊情况,如果只有1个点就能满足,那么这个点必须和所有需求的点重合,如果只有2个点就能满足,那么所有需求的点都应在这两个点的连线段上。metal 1 #include<iostream> 2 #include<cstdio> 3 #in 阅读全文