05 2018 档案

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