上一页 1 ··· 10 11 12 13 14 15 16 17 18 ··· 120 下一页
摘要: 思路十分显然,但是结构体的写法要注意. 定义重载运算符可以有效地减小代码量. 因为一个小错误调了半天,自闭了. code: #include <map> #include <cstdio> #define mod 998244353 #define setIO(s) freopen(s".in"," 阅读全文
posted @ 2020-06-01 22:01 EM-LGH 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 以前总是不愿意写平衡树,这次规范了一下写法. 1. 建立虚拟节点 -inf 与 inf 2. 每隔 10 次左右 splay 到根 3. 各种操作写递归版就行. code: #include <cstdio> #include <algorithm> #include <cstring> #incl 阅读全文
posted @ 2020-06-01 16:42 EM-LGH 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 如果进行了 $q$ 个操作,且这 $q$ 个操作都包含位置 $i$,则 $i$ 位置的值一定是最大值. 所以我们就可以按照区间进行线段树分治,然后拿 bitset 优化一下 $dp$ 即可. code: #include <bits/stdc++.h> #define N 10008 #define 阅读全文
posted @ 2020-06-01 08:37 EM-LGH 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 自己想+切掉的,开心. 推一推就发现如果要权值最大,就尽量使用那个乘法. 然后就分两种情况讨论一下: 1. 乘法用到 k-1 次. 2. 乘法用不到 k-1 次. code: #include <bits/stdc++.h> #define ll long long #define N 3006 # 阅读全文
posted @ 2020-05-29 17:15 EM-LGH 阅读(151) 评论(0) 推荐(0) 编辑
摘要: $O(n^2)$ 的式子是好列的,然后我们发现这是一个关于前后缀的转移. 用线段树合并优化这一过程. 具体地,分别维护 $x,y$ 的后缀和. 这里要注意:由于这道题中两个不同子树肯定没有交集,所以在线段树合并的时候肯定会合并到一个点,使得两个树中一个为空. 然后由于另一个是空的,就没有合并的必要了 阅读全文
posted @ 2020-05-29 13:59 EM-LGH 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 有一个非常暴力的做法:枚举 $u,v$ 两点中的一个点作为根,然后在 3 棵树中以这个点为根 DFS 一遍,求最大值. 然后考虑用随机化去骗分:设当前枚举的点为 $x$,下一个点 $y$ 可以是 $x$ 为根时求出的最优解. 然后每隔 8 到 9 次随机一个新的 $x$. code: #includ 阅读全文
posted @ 2020-05-28 19:48 EM-LGH 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 如果做过软件开发,餐巾计划问题的话这题就秒切了. 还是类似的套路:借流思想. 正解的话就是无聊地上一个主席树优化建图就行. 维护一颗边权为正数地主席树,再维护一颗边权为负数的主席树就行. 主席树写了,感觉好恶心...... code: #include <bits/stdc++.h> #define 阅读全文
posted @ 2020-05-28 10:20 EM-LGH 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 这道题正统的做法应该是进行黑白染色(因为我们发现 $x,y$ 满足二分图的性质) 这里写了一个不会证明正确性的解法. 一般来说,这种相消/要求互质什么的一般都要转换成二分图来解决. code: #include <bits/stdc++.h> #define N 20008 #define inf 阅读全文
posted @ 2020-05-28 09:59 EM-LGH 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 和软件安装比较相似的拆点模型. 我们发现,每个点只能经过一次,也就是说每个点最多可以贡献给其他点一次. 然后连边方式和软件安装就几乎是相同的了. code: #include <bits/stdc++.h> #define N 2008 #define inf 10000000 #define ll 阅读全文
posted @ 2020-05-28 08:56 EM-LGH 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 思路比较自然. 开始的时候有一个地方糊涂了,后来想清楚就好了. 这里注意一个地方: 令 $f[S]$ 表示 $S$ 集合的所有排列中 sum(S) 为最大值的排列数. 然后转移 $f[S]$ 的时候要把新的元素放到序列开头,因为放到结尾的话前面的前缀可能非常小,导致到达不了结尾. code: #in 阅读全文
posted @ 2020-05-27 16:37 EM-LGH 阅读(161) 评论(0) 推荐(0) 编辑
上一页 1 ··· 10 11 12 13 14 15 16 17 18 ··· 120 下一页