/* 返回顶部 */
摘要: 传送门 多重背包板子题, 多重背包就是每种东西有好几个,可以把它拆分成一个一个的01背包 优化:二进制拆分(拆成1+2+4+8+16+...) 比如18=1+2+4+8+3,可以证明18以内的任何数都可以用这几个数的和表示, 所以就把2个,4个....绑定为一个物品,和一个一个的效果是一样的 这样就 阅读全文
posted @ 2019-01-19 15:38 Mogeko 阅读(116) 评论(0) 推荐(0) 编辑
摘要: 传送门 这道题信息量好大啊 1.Dilworth定理 Dilworth定理:对于一个偏序集,最少链划分等于最长反链长度。 Dilworth定理的对偶定理:对于一个偏序集,其最少反链划分数等于其最长链的长度。 其实就是说,对于一个序列, 最大上升子序列长度 = 不上升子序列个数,最大不上升子序列长度 阅读全文
posted @ 2019-01-19 10:10 Mogeko 阅读(221) 评论(0) 推荐(0) 编辑
摘要: 关于埃氏和其他算法 欧拉算法 void Prime(int N) { for(int i=2; i<=N; i++) { if(!check[i]) prime[cnt++]=i; for(int j=0; j<cnt && prime[j]*i<=N; j++) { check[prime[j]* 阅读全文
posted @ 2018-12-18 02:31 Mogeko 阅读(225) 评论(0) 推荐(1) 编辑
摘要: 传送门(ST表裸题) ST表是一种很优雅的算法,用于求静态RMQ 数组l[i][j]表示从i开始,长度为2^j的序列中的最大值 注意事项: 1.核心部分: for(int j = 1; (1<<j) <= n; j++) for(int i = 1; i+(1<<j)-1 <= n; i++) { 阅读全文
posted @ 2018-12-04 19:45 Mogeko 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 传送门 这道题一眼看上去...Floyd..? 每个村庄修复时间、询问都是不下降的...似乎连排序都省略了x 既然这样,那每次询问时,更新这个询问之前的村庄来求目前的最短路径就可以了 注意事项:对于这个循环 1.k不能定义为for内部的局部变量(因为之前的村庄已经遍历过了不需要再走一遍) (否则时间 阅读全文
posted @ 2018-12-04 13:23 Mogeko 阅读(128) 评论(0) 推荐(0) 编辑
摘要: qwq 今天做完并查集突然想起来这道以前做的好(shui)题, 虽然是黄题,但是是并查集一个比较特别的用法 这道题大概可以用求最小环的方式来做,但是从直觉上果然还是并查集w 乍一看只要求出“父→子”即为环,每次getfa时环长度+1,再用min维护环的最小值即可 这时如果用平时的习惯写路径压缩的话, 阅读全文
posted @ 2018-12-02 23:09 Mogeko 阅读(100) 评论(0) 推荐(0) 编辑
摘要: qwq 同关押罪犯 对于这种希望几个对象分开的题目,只要把并查集反过来想就可以了。 既然要求删除的边权最小,那么只要反过来求给定的点不连通时保留的边权最大即为正解。 同样的,首先将边权排序,不会使敌人连通则连接。 注意事项:1.初始化 2.最后的答案要定义为long long bin哥今天讲的: 当 阅读全文
posted @ 2018-12-02 11:39 Mogeko 阅读(153) 评论(1) 推荐(0) 编辑
摘要: qwq dij其实和prim挺像的,prim是找权值最小点,dij是找边, 用一个优先队列就可以在加入边的时候直接排序,避免了每次遍历更新min priority_queue <pair<int,int>,vector<pair<int,int> >,greater<pair<int,int> > 阅读全文
posted @ 2018-11-30 22:00 Mogeko 阅读(222) 评论(1) 推荐(0) 编辑
摘要: 传送门(其实就是求斐波那契数列....) 累了 明天再解释 做这道题需要一些关于矩阵乘法的基础知识。 1. 矩阵乘法的基础运算 只有当矩阵A的列数等于矩阵B的行数时,A与B可以相乘(A的行数不一定等于B的列数)。 代码实现(重载运算符): 2. 单位矩阵 主对角线上的元素都为1,其余元素全为0的n阶 阅读全文
posted @ 2018-11-29 23:55 Mogeko 阅读(240) 评论(3) 推荐(0) 编辑
摘要: qwq $kruskal$算法 按边权从小到大排序,并查集合并即可。 #include<cstdio> #include<algorithm> using namespace std; int fa[200005]; int n,m; struct abc { int from,to,w; } q[ 阅读全文
posted @ 2018-11-22 16:50 Mogeko 阅读(144) 评论(0) 推荐(0) 编辑