随笔分类 -  其他 - 模型/总结/重要

上一页 1 2 3 4 5 6 7 8 9 10 ··· 32 下一页
摘要:脑残了,这题竟然都不会. 显然,把所有左右端点放在一起排序,然后取中位数是 $k=1$ 时最优的. $k=2$ 的时候显然距离中点越近越好,所以将中点扔进去,然后枚举中间的分割点,分割点左右就变成两个子问题了. 动态求中位数的话用平衡树/权值线段树维护就行了. code: #include <bit 阅读全文
posted @ 2020-06-09 11:05 EM-LGH 阅读(135) 评论(0) 推荐(0)
摘要:显然取对数,然后二分答案进行 01 分数规划. 设 $f[i][j]$ 表示在 AC 自动机上的点 $i$ ,匹配到了 $j$ 位的最大价值. 转移的时候判断一下当前是点还是数字,然后在 AC 自动机上的终止节点上算一下贡献就行. 构建 AC 自动机的时候要注意:点 $i$ 的价值是 val[i]+ 阅读全文
posted @ 2020-06-09 00:01 EM-LGH 阅读(174) 评论(0) 推荐(0)
摘要:显然,对于一条边的两个端点必须选择一个;对于一个块内的点,只能选择一个. 第一种限制好满足,第二个限制的话前/后缀和优化一下建图就行可. code: #include <bits/stdc++.h> #define N 4000009 #define ll long long #define set 阅读全文
posted @ 2020-06-08 22:11 EM-LGH 阅读(157) 评论(0) 推荐(0)
摘要:没调完呀,感觉代码能力还是有待提高...... 写代码一定要讲究结构 + 逻辑性. 如果结构或者逻辑性不好的话是非常非常遭罪的 QAQ...... upd:好像调了 5 分钟就过了 这个问题等价于求:$x$ 能到达一个点集, $y$ 也能到达一个点集,这两个点集是否有交集 ? 由于是否到达只有边权最 阅读全文
posted @ 2020-06-08 17:26 EM-LGH 阅读(159) 评论(0) 推荐(0)
摘要:离线,然后从后向前扫描,维护每一个时刻当前位置的后缀最小值. 我们发现依次修改影响的是时间线段树一段区间要取 min,这个用吉司机线段树维护就好了. 具体地,我们记录一个 tag 标记,然后下传条件是 mx[now]<mx[lson] 或 mx[now]<mx[rson]. 这道题卡常,最好不要用 阅读全文
posted @ 2020-06-08 16:10 EM-LGH 阅读(317) 评论(0) 推荐(0)
摘要:显然,$sgcd(x,y)|gcd(x,y)$. 那么,$sgcd(x,y)=\frac{gcd(x,y)}{p[gcd(x,y)]}$ 其中 $p[x]$ 表示 $x$ 的最小非 1 质因子. 那么我们可以先把 $gcd(a[1],a[i])$ 都求出来,然后枚举这个最小质因子. 因为 $gcd( 阅读全文
posted @ 2020-06-08 14:47 EM-LGH 阅读(214) 评论(0) 推荐(0)
摘要:分析一波发现如果一个序列合法,那么必须满足所有数都是最小值的倍数. 加上组合数就行了. code: #include <bits/stdc++.h> #define ll long long #define mod 998244353 #define N 500006 #define setIO(s 阅读全文
posted @ 2020-06-04 11:14 EM-LGH 阅读(149) 评论(0) 推荐(0)
摘要:后缀自动机的做法很显然:建出后缀树,线段树合并,然后倍增的时候更新答案就行. 后缀数组的做法也挺显然:二分答案,然后用主席树判定一下 $[a,b-mid+1]$ 是否有值即可. code: #include <bits/stdc++.h> #define N 200006 #define lson 阅读全文
posted @ 2020-06-03 10:34 EM-LGH 阅读(268) 评论(0) 推荐(0)
摘要:暴力枚举的话是 $O(n^2)$ 的,但是我们可以维护每个圆的外接矩阵,然后显然如果一个圆会被当前圆删,外接矩阵一定有交集,所以就可以用 KDtree 来剪枝了. 直接做的话洛谷上能过,LOJ 上要在开始的时候把所有点都旋转一个特定的角度来保证随机性. code: #include <bits/st 阅读全文
posted @ 2020-06-02 23:01 EM-LGH 阅读(201) 评论(0) 推荐(0)
摘要:自己想出来的,还是相当开心的(说实话这题也不难 QAQ......) 首先,那个时间限制非常好处理:离线然后拆成插入和删除就行. 对于每一种元素的每一个位置维护一个 $pre_{i}$ 表示上一次出现的位置. 假设我们查询的位置是 $pos$,我们二分答案 $mid$. 如果 $mid$ 合法,就要 阅读全文
posted @ 2020-06-02 16:50 EM-LGH 阅读(196) 评论(0) 推荐(0)
摘要:非常有意思的 dp,很难想出来吧. 如果对着图去想,很难有思路,所以可以把图上的问题转化为序列问题. 我们发现,如果一个点集合法,当且仅当这个点集构成一个不降序列,且其他点都与这个点集形成逆序对. 令 $f[i]$ 表示由 $1$ ~ $i$ (选 $i$ )构成的合法方案数. 然后如果不选一个元素 阅读全文
posted @ 2020-06-02 11:51 EM-LGH 阅读(273) 评论(0) 推荐(0)
摘要:这个状压状态时显然的,但是总状态数有 $\binom{K}{P}$. 好在题目中有一个要求,就是每个格子必须经过一次,所以说我们压缩的长度为 $P$ 的状态中首位必为 1. 那么状态数就减小为 $\binom{K-1}{P-1}$,来一个矩阵乘法就行了. code: #include <cstdio 阅读全文
posted @ 2020-06-02 10:44 EM-LGH 阅读(177) 评论(0) 推荐(0)
摘要:令 $f[i][k][j]$ 表示考虑前 $i$ 个位置,有 $k$ 次更新,且最大值为 $j$ 的方案数. 转移的话是一个前缀和. 由于是多组询问,所以可以先预处理出来. 细节什么的要注意一下. code: #include <bits/stdc++.h> #define ll long long 阅读全文
posted @ 2020-06-02 09:42 EM-LGH 阅读(205) 评论(0) 推荐(0)
摘要:我们发现最多只会用 n 个背包. 令 $f[S]$ 表示装完 $S$ 的物品所需最少背包数量. 令 $g[S]$ 表示满足 $f[S]$ 的情况下剩余的最大重量. 转移略复杂,细节比较多. code: #include <bits/stdc++.h> #define N 24 #define inf 阅读全文
posted @ 2020-06-02 09:11 EM-LGH 阅读(123) 评论(0) 推荐(0)
摘要:思路十分显然,但是结构体的写法要注意. 定义重载运算符可以有效地减小代码量. 因为一个小错误调了半天,自闭了. code: #include <map> #include <cstdio> #define mod 998244353 #define setIO(s) freopen(s".in"," 阅读全文
posted @ 2020-06-01 22:01 EM-LGH 阅读(200) 评论(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 阅读(159) 评论(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 阅读(163) 评论(0) 推荐(0)
摘要:$O(n^2)$ 的式子是好列的,然后我们发现这是一个关于前后缀的转移. 用线段树合并优化这一过程. 具体地,分别维护 $x,y$ 的后缀和. 这里要注意:由于这道题中两个不同子树肯定没有交集,所以在线段树合并的时候肯定会合并到一个点,使得两个树中一个为空. 然后由于另一个是空的,就没有合并的必要了 阅读全文
posted @ 2020-05-29 13:59 EM-LGH 阅读(224) 评论(0) 推荐(0)
摘要:有一个非常暴力的做法:枚举 $u,v$ 两点中的一个点作为根,然后在 3 棵树中以这个点为根 DFS 一遍,求最大值. 然后考虑用随机化去骗分:设当前枚举的点为 $x$,下一个点 $y$ 可以是 $x$ 为根时求出的最优解. 然后每隔 8 到 9 次随机一个新的 $x$. code: #includ 阅读全文
posted @ 2020-05-28 19:48 EM-LGH 阅读(188) 评论(0) 推荐(0)
摘要:如果做过软件开发,餐巾计划问题的话这题就秒切了. 还是类似的套路:借流思想. 正解的话就是无聊地上一个主席树优化建图就行. 维护一颗边权为正数地主席树,再维护一颗边权为负数的主席树就行. 主席树写了,感觉好恶心...... code: #include <bits/stdc++.h> #define 阅读全文
posted @ 2020-05-28 10:20 EM-LGH 阅读(164) 评论(0) 推荐(0)

上一页 1 2 3 4 5 6 7 8 9 10 ··· 32 下一页