摘要: dp..dp的时候不能设f[N][x1][x2][x3][x4],会T,要把N省略,然后通过1/2/3/4牌的数量来算已经走到哪一个了 阅读全文
posted @ 2018-09-19 22:11 Ressed 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 我们先bfs一下看看是否能到最底下的所有点 如果不能的话,直接把不能到的那几个数一数就行了 如果能的话: 可以发现(并不可以)某格能到达的最底下的格子一定是一个连续的区间 (因为如果不连续的话,我们先假设中间有一个格x隔开了两个能到的区间,那x一定比那两个区间的端点高,但它又是可达的,那一定有一条路 阅读全文
posted @ 2018-09-19 22:09 Ressed 阅读(223) 评论(0) 推荐(0) 编辑
摘要: 显然可以先把被覆盖掉的区间去掉,然后排个序,左、右端点就都是单调的 设f[i][j]表示前i个区间中删掉j个,而且钦定i不能删的最大覆盖长度 (如果不钦定,就要有一个删掉的状态,那我无法确定前面的到底到哪是没删的) 那么有$f[i][j]=max\{f[k][j-(i-k-1)]+R[i]-max( 阅读全文
posted @ 2018-09-19 21:58 Ressed 阅读(435) 评论(0) 推荐(0) 编辑
摘要: 常见操作:先把所有串都连到一起,但中间加上一个特殊的符号(不能在原串中/出现过)作为分割 由于全部的子串就等于所有后缀的所有前缀,那我们对于每一个后缀,去求一个最长的前缀,来满足这个前缀在至少K个原串中出现过 那我们就二分一下这个前缀的长度。现在的问题就是怎么判断这个前缀是否在K个串中出现过了。 显 阅读全文
posted @ 2018-09-19 21:43 Ressed 阅读(467) 评论(0) 推荐(0) 编辑
摘要: 原理 定义rank[i]表示suffix[i]在所有后缀中的字典序排名;sa[i]表示字典序排名为i的后缀是suffix[sa[i]] 定义height[i]表示排名为i的后缀和排名为i-1的后缀的LCP(最长公共前缀) 可以证明,$height[rank[i]]>=height[rank[i-1] 阅读全文
posted @ 2018-09-19 21:22 Ressed 阅读(134) 评论(0) 推荐(0) 编辑