05 2020 档案
摘要:B - B CodeForces - 723E 一张无向图,给边指定方向,问最多可以让多少个点度数为0,输出方案。 考虑欧拉回路性质:度数为偶数的点一定可以变成为0,对于度数为奇数的点,将每个点向0连一条边,度数为奇数的点一定有偶数个, 构造一个欧拉回路,直接用set保存输出。dfs删除对应的边。
阅读全文
摘要:就是对于给定的若干个字符,每个字符出现的频率不同,对每个字符进行编码,使得占用内存最少, 将点按照频率由小到大排序,然后贪心的选择两两合并,使得权值乘路径之和最小。 HDU - 2527 #include<bits/stdc++.h> using namespace std; #define pb
阅读全文
摘要:P2756 飞行员配对方案问题 简单二分图匹配 #include<bits/stdc++.h> using namespace std; #define pb push_back const int N=1e3+5; int gp[N][N],match[N],vis[N]; int n,m; bo
阅读全文
摘要:splay 通过旋转的方式维持二叉树平衡。 直线型:一直向上右旋或者左旋。 之字型:先左旋,再右旋,或者先右旋,再左旋。 一直旋到根。 P3391 【模板】文艺平衡树 给定一个序列,经过若干次 [ l , r ] 区间的旋转,问m 次之后 序列。 考虑splay 旋转,维护一个键值,那么点树上的位置
阅读全文
摘要:就是对于一个图,求有多少个生成树。 基尔霍夫矩阵树定理:构建一个邻接矩阵,对角线上的点值等于点 i 的度数,如果 i 和 j 有边相连 对应矩阵点值为 -1 生成树个数:任意的n-1阶行列式的值。 UVA - 10766 题目大意:现有n个点,m条边,k为根节点,每条边代表边的两点有矛盾,不能相连,
阅读全文
摘要:L: 题意:给定一个n*m的网格,每个初始的网格有一个高度 ,每个a[ i ] 在[ l , r ]的区间里;两种操作: 1,相邻方块高度+1 2 . 一个方块的高度+2求使得若干次操作之后网格所有点到达同一高度的初始网格数量。 解法:考虑最初的网格有奇数有偶数,通过操作2可以把同为奇数的方格对齐,
阅读全文
摘要:ps :复杂度毕竟O(n^2) , 再优化也有多种卡掉的手段。 1 . SLF优化: SLF优化,即 Small Label First 策略,使用 双端队列 进行优化。 一般可以优化15%~20%,在竞赛中比较常用。 设从 u 扩展出了 v ,队列中队首元素为 k ,若 dis[ v ] < di
阅读全文
摘要:A - Prime Graph CodeForces - 1178D 题意:给定一个n,构造一张图,使得所有点度数为素数,边的总数为素数,无自环,无重边,输出方案。 思路:可不严谨认为每个点连2条边,和每个点连三条边这个区间内,必然有素数。 先将图构造为一个环,然后将对角点连一条边,组成度数为三的点
阅读全文
摘要:B - Dining POJ - 3281 首先二分图的多重匹配匈牙利算法是不行的,无法最优。 直接在构图跑最大流也是不行的:会出现限制。 每一个人拆成两个点,流量为1,增加流量限制,保证不会变大。 #include <cstdio> #include <cstring> #include <que
阅读全文

浙公网安备 33010602011771号