08 2018 档案
摘要:题意: 现在有一副完全图, 将他转化成线图。 线图就是 把原来的图上的边都变成点, 然后如果原来的任意2条边存在公共点, 他们就会有一条边, 边权为原来的2条边的和。 最后求出线图中的任意2点的最短路的和。 题解: 对于原图来说 现在有 ( a, b) -> (c, d) 他的花费是 W(a,b)
阅读全文
摘要:题意: 现在有一个2维矩阵, 初始化为0。 并且这个矩阵是及时更新的。 dp[i][j] = dp[i-1][j] + dp[i][j-1]; 现在有2种操作: 0 x y dp[1][x] += y 1 x 查询dp[k][x]的值。 题解: 神奇的分块算法。 首先我们可以发现 如果在一个 x 的
阅读全文
摘要:HDU-6437 题意:一天有n个小时,现在有m场电影,每场电影有一个愉悦值,有k个人,电影分2种类型A, B, 并且每一场电影只能一个人看, 一个人可以看无数次电影, 只要时间足够, 但是连续看同一种电影会减少愉悦值W点。现在要求所有人总的愉悦值加起来最大。 题解: 网络流建图,先把每个点拆成2个
阅读全文
摘要:AC自动机 模板题 HDU-2222 Keywords Search 1 #include<bits/stdc++.h> 2 using namespace std; 3 #define LL long long 4 #define ULL unsigned LL 5 #define fi firs
阅读全文
摘要:转自仓鼠大神的博客 1.快速幂求法 费马小定理(a和p互质) a^(p-1) ≡1 (mod p) a^(p-2) ≡ inv(a) (mod p) 1 LL pow_mod(LL a, LL b, LL p){//a的b次方求余p 2 LL ret = 1; 3 while(b){ 4 if(b
阅读全文
摘要:link-cut tree #define lch(x) tr[x].son[0] #define rch(x) tr[x].son[1] const int N = 5e5 + 100; struct Node{ int rev, rt; int son[2], pre; int mx, val,
阅读全文
摘要:1 #define lch(x) tr[x].son[0] 2 #define rch(x) tr[x].son[1] 3 const int N = 1e5 + 100; 4 int tot = 0, root; 5 struct Node{ 6 int son[2], pre, sz; 7 vo
阅读全文
摘要:1. 最大流 const int N = 200; const int M = N*N; int head[N], deep[N], cur[N]; int w[M], to[M], nx[M]; int tot; void add(int u, int v, int val){ w[tot] =
阅读全文
摘要:题意:现在有n个主武器, m个副武器, 你要选择1个主武器,1个副武器, 使得 题目给定的那个式子最大。 题解:这个题目困难的地方就在于有绝对值,| a - b | 我们将绝对值去掉之后 他的值就为 max{ a-b, b-a }. 由于题目中状态最多也是5维, 所以我们对与这五维枚举他的状态, 是
阅读全文
摘要:Nasta Rabbara 题意:简单来说就是, 现在有 n个点, m条边, 每次询问一个区间[ l , r ], 将这个区间的所有边都连上, 如果现在的图中有奇数环, 就输出 “Impossible”, 否者就输出 ”possible“。 题解: 步骤1:我们先找出每个最小的 [ l, r] 当这
阅读全文
摘要:题目传送门 题解: 首先关于二分图的性质, 就是没有奇环边。 题目其实就是让你判断每个时段之内有没有奇环。 其次 lct 只能维护树,(反正对于我这种菜鸟选手只会维护树), 那么对于一棵树来说, 填上一条边会形成奇数环,或者偶数环。 现在我们考虑偶数环, 对于偶数环来说, 如果加上一条边都能使得这个
阅读全文
摘要:Anton and Permutation 题意:给定一个 1-n的排列, 现在有m次操作, 每次操作交换 a[l],a[r] 求交换完之后整个序列的逆序对数是多少。 题解: 树状数组套主席树去维护。 感觉是一个主席树 + 树状数组套动态开点的线段树啊。 好久没写主席树了 都不会写了。。。 每次交换
阅读全文
摘要:题解:先将所有的边按照 a 从小达到排序, 类似于最小生成树的方法, 用并查集维护2个点是否联通, 每次处理一条新的边的时候, 先判断这2个点是否联通, 如果不连通就把这2个点连边,如果这2个点已经联通了,那么如果新加上这条边之后就会和原来的链构成一个环, 我们再去掉这个环上b最大的那条边, 每次处
阅读全文
摘要:1 struct FastIO { 2 static const int S = 1310720; 3 int wpos; 4 char wbuf[S]; 5 FastIO() : wpos(0) { } 6 inline int xchar() { 7 static char buf[S]; 8
阅读全文
摘要:这里比上次多了几个操作。 1. make_root(u) 换根节点, 先access(u), 再splay(u),将u移动到splay树的最顶上, 现在这棵splay对于root来说 只有左子树上有东西, 右子树上没有东西, 那么交换一下左右子树, 再打个标记, 这样就变成了左子树没东西,右子树上有
阅读全文
摘要:上一次用分块过了, 今天换了一种lct(link-cut tree)的写法。 学lct之前要先学过splay。 lct 简单的来说就是 一颗树, 然后每次起作用的都是其中的某一条链。 所以每次如果需要用到一条链, 就要先 access 一下某个位置, 到root, 将其他的非法的东西抠掉。 并且 一
阅读全文
摘要:Tree 题意: 给你一颗树, 每一个节点都有一个权值, 如果一个石头落在某个节点上, 他就会往上跳这个的点的权值步。 现在有2种操作, 1 把一个石头放在 x 的位置 询问有跳几次才跳出这棵树, 2 修改某个节点的权值。 解法:树上分块, 用dfs分好块之后。 对于每一块都处理出如果石头落在某个位
阅读全文
摘要:Ringland 题意: 在一个环上有n个男生, n个女生, 现在要求每一个男生与女生配对, 求总代价最小。 题解: 如果2个男生到女生的路交叉了, 那么我们交换这2个男生的路, 总代价是一定会变得小的。 所以组合方式是线性的. 假设有3个男生 3个女生, 并且都已经排好序了。 搭配方式一共有3种。
阅读全文
摘要:一道操作很多的splay的题目。 还是和原来一样, 减少代码量, 在最左边和最右边都添加一个新的虚节点。 每一个节点都维护 从左端点开始的最大连续子序列, 右端点开始的最大连续子序列, 可以不取, 即为0, 还要维护这段区间的最大值。 每次Update的时候更新数据。 每次翻转的时候, 要把这个点的
阅读全文
摘要:Hills And Valleys 题意:给你一个序列, 可以翻转一次区间 [l, r] 求最大 非递减的 序列长度。 题解:枚举翻转区间,然后匹配。 如果不翻转区间, 那么就相当于用b[] = {0,1,2,3,...,7,8,9} 来匹配原序列, 可以重复匹配, 求最长的长度。 现在我们假设翻转
阅读全文
摘要:题意: 现在有n条火车, 每条火车都有一个运行 [ Li, Ri ], 现在有m支火箭队, 每次火箭队都会破坏这整条铁路上的一个点, 如果一条火车的运行区间[Li, Ri] 被破坏了, 那么这条火车会立刻停止。 题解:线段树, 先将所有火车的左右端点排好序, 然后每一个叶子节点都是一个火车的区间,
阅读全文
摘要:整数规划 原来的km+hunger跑法T了, 拿了一个新的板子, 新的写法是将这原来的找新的最小的d放在了上一次的残留图上,从而减小复杂度, 但是个人还不是很理解为什么最小的d下一次出现的位置一定是这次出现的位置的对应的x的点。 复杂度:n^3 代码: 1 #include<bits/stdc++.
阅读全文
摘要:这个题目一个队友没读懂, 然后我读错了题目, 还让他堆了半天的公式写了半天的代码, 交上去一直0.0, 另一队友问题目有没有读错, 我坚持没有读错, 然后坑了2个小时的时间,不然应该会早一点做出来。 题意: 平面上有n个不重和的点, 现在定义一个集合是好的, 那么就需要满足, 这个集合里的每一个子集
阅读全文
摘要:题意:给你一个n, 接来下给你一个 [1,n] 中偶数的排列, 还有一个 [1, n] 中 奇数 按照递增的顺序排列, 现在求一个原数列, 使得偶数列排序 和 奇数列 都是原数列的一个子序列, 现在求原数列的最小的逆序对是多少。 题解: 昨天一直想的是把偶数列往奇数列里面插入, 又想到这个东西有一定
阅读全文

浙公网安备 33010602011771号