摘要: 考虑到$lcm(1,2,3,4,5,6)=60$,所以操作序列每60秒一个循环。将操作表示成转移矩阵的形式,预处理出前60秒的转移矩阵以及它们的乘积$B$。那么t秒的转移矩阵为前$t\bmod 60$个转移矩阵的乘积乘以$B^{\lfloor\frac{t}{60}\rfloor}$。用矩阵快速幂加... 阅读全文
posted @ 2015-08-14 23:12 Claris 阅读(519) 评论(0) 推荐(0) 编辑
摘要: 设f[i][j]表示串ij可以由哪些字母成长过来,用二进制压位表示。设g[i][j]表示给定串中[i,j]这个区间一开始可以由哪些字母成长多来,用二进制压位表示。设h[i]表示给定串前i位最少需要几个字母,h[i]=min(h[j]+1),j#include#define N 105int T,n,... 阅读全文
posted @ 2015-08-14 20:50 Claris 阅读(586) 评论(0) 推荐(0) 编辑
摘要: 二分答案mid,将差距先都调到mid以内。首先从左往右扫,a[i]=min(a[i],a[i-1]+mid)。然后从右往左扫,a[i]=min(a[i],a[i+1]+mid)。枚举要变为0的位置,求出L,R使得:a[L]>(i-L)mida[R]>(R-i)mid此时只需要把[L,i]和[i,R]... 阅读全文
posted @ 2015-08-14 03:23 Claris 阅读(559) 评论(0) 推荐(0) 编辑