摘要:
E 非常经典的树上操作(树上DP)。父节点到某个子节点,值是如何变化的。 1 #include <cstdio> 2 #include <cstdlib> 3 #include <cstring> 4 #include <cmath> 5 #include <cstdbool> 6 #include 阅读全文
摘要:
简单来说,建立一个 AC 自动机有两个步骤: 基础的 Trie 结构:将所有的模式串构成一棵 Trie。 KMP 的思想:对 Trie 树上所有的结点构造失配指针。 然后就可以利用它进行多模式匹配了。 TODO AC 自动机上 DP 阅读全文
摘要:
阅读全文
摘要:
看到别人的视频讲解 AtCoder Beginner Contest 346 A 至 G 題讲解 by dreamoon C 如果用sort写,那么再从小到大遍历也需要写几行 #include <cstdio> #include <cstdlib> #include <cstring> #inclu 阅读全文
摘要:
A 要么所有人全部做左边的筷子,要么全部右边的筷子。依次处理。 大家按照顺序拿筷子,如果成立,当前的人,所需方向的筷子肯定没拿。如果所需方向的反方向的筷子被拿了,就结果*2(第一选择方向可以任选);反而,肯定要求第一选择方向是所需方向,就结果*1。 1 #include <cstdio> 2 #in 阅读全文
摘要:
阅读全文
摘要:
别人写的 LIS(最长上升子序列)问题的三种求解方法以及一些例题_lis算法-CSDN博客 阅读全文
摘要:
一般priority_queue就能弄 手写堆,一般是删除其中一个位置(非根和最后一个叶子)的点,那么需要delete(数值为max/min),然后down操作。然后修改后有一个新值,要up 要记录a[x]=y,给出一个x,要获得这个节点在树上的位置 c++优先队列(堆) - congmingyig 阅读全文
摘要:
1 /** 2 1. rightmost_smaller,那肯定是第一个啊。所以不成立! : 应该是小于x的数最靠右的那个 3 2. 两个方法,a. 手写二分while (l<r)... b.binary_search函数upper_bound和lower_bound。它们互相对照 4 3. 手写二 阅读全文
摘要:
如果不是这个连通块里的访问的第一个点,那么对于点d,它的后续可以访问的节点存在点编号比它低的,即low[d]<dfn[d] 访问过的点,用栈保存。对于点stack[x],编号id从x到y,点stack[x+1]…stack[y]都是点stack[x]可以到达的。 所以,当low[d]=dfn[d] 阅读全文