摘要: 标签:状态压缩+矩阵快速幂。 题解: 首先看范围,p<=10,那么我们可以想到状态压缩。我们把从一个长度为10的区间进行压缩,1代表可以,那么当值一个区间的1的个数为k个,我们就认为他是合法的。要注意这里所定义的区间,是有起点的,但是没有记下来,因为没有必要。然后我们就可以想一下状态是怎么转移的。那 阅读全文
posted @ 2017-12-05 17:14 D_O_Time 阅读(265) 评论(0) 推荐(2) 编辑
摘要: 标签:扩展卢卡斯+方案数推导。题解: 首先要想到使用组合数而不是DP,否则就会深陷泥潭而不可自拔了。 我们把两个序列拼起来,也就是a+b个位置,每一个位置都是0或1。自然有2^(a+b)种方案。我们分a==b和a>b两种情况来讨论(我也不知道怎么想到这两种情况是不一样的): a==b:首先a的赢和输 阅读全文
posted @ 2017-12-05 13:52 D_O_Time 阅读(530) 评论(0) 推荐(1) 编辑
摘要: 标签:分块。题解: 200000,而且标号从0开始,很符合分块的条件啊。看看怎么实现。 首先分成√n个区间,然后如果我们对于每一个位置i,求出一个Next[i]和step[i],分别表示跳到的后一个位置与步数,因为是分块所以就是跳到下一个区间的步数与位置了。处理这两个数组要从前到后,只需要O(n)。 阅读全文
posted @ 2017-12-05 13:17 D_O_Time 阅读(180) 评论(0) 推荐(1) 编辑
摘要: 标签:区间DP。题解: 首先分析题目,根据题目中的列队方式以及数据范围,我们容易想到O(n2)的算法,也就是区间DP。发现直接dp[L][R],不能转移,于是添加一个dp[L][R][0/1],0表示这个区间最后从左边插入,1则表示右边。 然后分析从左边插入,上一个数要么是从左的要么是从右的,因为这 阅读全文
posted @ 2017-12-05 13:15 D_O_Time 阅读(144) 评论(0) 推荐(1) 编辑