摘要: 仙人掌。 仙人掌入门题。。不过入门都好难。。。 题解好复杂。。 总体来说,没有环的话,就是一棵树,很好求。 如果有环的话,就找出这个环,用一个单调队列用环上俩个点对更新答案。(如果不用单调队列就O(n^2)超时) #include #include #include using namespace std; const int maxn = 3000000 + 10; in... 阅读全文
posted @ 2016-07-01 18:18 invoid 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 线段树。 真还就是个线段树。。 除去操作1,2的话,线段树很容易就处理了,问题在于如何处理操作1和2。(这点没想到)。。 我们用一个delta维护操作1,如果没有旋转就+k,不然就-k。 每次读入i和j的时候用trans处理一下,就成功在O(1)的时间解决了操作1和2。 细节很重要。 #include #include #include using namespace std; ... 阅读全文
posted @ 2016-07-01 16:45 invoid 阅读(135) 评论(0) 推荐(0) 编辑
摘要: spfa+dp。 首先用一个类似spfa的过程求出a[s][t],聪聪在s,可可在t时,聪聪第一步怎么走。 然后dp求出f[s][t],表示聪聪在s,可可在t的期望步数。 #include #include #include using namespace std; const int maxn = 1000 + 10; const int maxm = 2000 + 10; int... 阅读全文
posted @ 2016-07-01 13:52 invoid 阅读(161) 评论(0) 推荐(0) 编辑
摘要: AC自动机. 统计每个字符串在自己和其他字符串中出现的次数。 ac自动机的概念,首先有个trie树保存了所有的字符串。 fail指针指向该字符串的后缀在整个trie树中可以做最长的前缀的位置。 每个字符串都可以由fail指针转移到是该字符串字串的位置。 所以很多统计就可以进行辣。 字符串的题好难。。 #include #include #include using namesp... 阅读全文
posted @ 2016-07-01 01:06 invoid 阅读(123) 评论(0) 推荐(0) 编辑