05 2018 档案
摘要:割点 首先 tarjan 求割点, 对于不是割点的点, 答案是 2 (n 1) 有序,所以要乘 2 对于是割点的点, 答案是删去该点后所有连通块的个数加上 n 1 在乘 2 cpp include include include include include define ll long long
阅读全文
摘要:强连通分量 一个结论: 在有向图中, 一个联通块能被所有点遍历当且仅当图中只有一个连通块出度为零 cpp include include include include include include include using namespace std; const int MAXN = 100
阅读全文
摘要:FFT https://www.luogu.org/problemnew/solution/P3723 重点在于构造卷积的形式 cpp include include include include include include using namespace std; const int MAX
阅读全文
摘要:FFT $$E_i = F_i / q_i = \sum_{i j} \frac{q _ j} {(i j)^2}$$ 设 $p _ i = q_{n i}$ $g(i) = \frac 1 {i^2}$ 则 $E_i = \sum_{j=1}^{i 1} q _ i g(j i) \sum _ {
阅读全文
摘要:讲解:http://www.cnblogs.com/poorpool/p/8760748.html 递归版FFT cpp include include include include include include using namespace std; const int MAXN = 400
阅读全文
摘要:DP orz__stdcall 首先要想出来,每行最多只能放两个棋子,这是显然的 于是决策就是一行一行地处理 30分的做法就是裸的枚举,暴搜,枚举这一行放哪里,放几个 然后想到了压位dp,按3进制表示当前棋盘的状态,即某一列没有棋子,或者有一个,两个棋子,能过50分 接着可以发现,棋子的顺序是无所谓
阅读全文
摘要:DP + 贪心 我们发现,如果只有一个窗口,贪心即可解决,吃饭时间长的人一定要先打饭 有两个窗口的时候,这条性质依然满足,但是两个窗口如何分配,需要 01 背包 cpp include include include include include using namespace std; cons
阅读全文
摘要:贪心神题 首先我们发现一个显然的贪心策略,连接相邻两个写字楼总是更优. 所以本题就变成了数轴上一堆点,要选 k 个彼此不相邻的区间,使得区间长度最小 对于 10000 的数据来说,我们可以用 DP 解决, f[i][j]表示考虑前i个点,已经形成j对点的最小距离,num[i]表示第i个点的坐标。 如
阅读全文

浙公网安备 33010602011771号