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

上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 32 下一页
摘要:这道题正统的做法应该是进行黑白染色(因为我们发现 $x,y$ 满足二分图的性质) 这里写了一个不会证明正确性的解法. 一般来说,这种相消/要求互质什么的一般都要转换成二分图来解决. code: #include <bits/stdc++.h> #define N 20008 #define inf 阅读全文
posted @ 2020-05-28 09:59 EM-LGH 阅读(144) 评论(0) 推荐(0)
摘要:和软件安装比较相似的拆点模型. 我们发现,每个点只能经过一次,也就是说每个点最多可以贡献给其他点一次. 然后连边方式和软件安装就几乎是相同的了. code: #include <bits/stdc++.h> #define N 2008 #define inf 10000000 #define ll 阅读全文
posted @ 2020-05-28 08:56 EM-LGH 阅读(153) 评论(0) 推荐(0)
摘要:思路比较自然. 开始的时候有一个地方糊涂了,后来想清楚就好了. 这里注意一个地方: 令 $f[S]$ 表示 $S$ 集合的所有排列中 sum(S) 为最大值的排列数. 然后转移 $f[S]$ 的时候要把新的元素放到序列开头,因为放到结尾的话前面的前缀可能非常小,导致到达不了结尾. code: #in 阅读全文
posted @ 2020-05-27 16:37 EM-LGH 阅读(173) 评论(0) 推荐(0)
摘要:我不明白这道题第二问到底在说啥...... 第一问比较简单,直接用 set 来贪心就行了. 然后我感觉第二问就是求一个最大独立集就行. 套路:都 0202 年了,看到最优化就要上随机化呀!! code: #include <bits/stdc++.h> #define N 10008 #define 阅读全文
posted @ 2020-05-27 11:20 EM-LGH 阅读(186) 评论(0) 推荐(0)
摘要:这道题比的就是谁更细心. 令 $f[i]$ 表示前 $i$ 面玻璃的透过率(从 $1$ 射入) 令 $g[i]$ 表示前 $i$ 面玻璃的反射率(从 $i$ 射入) 然后进行递推就行. code: #include <bits/stdc++.h> #define ll long long #defi 阅读全文
posted @ 2020-05-27 08:48 EM-LGH 阅读(136) 评论(0) 推荐(0)
摘要:十分轻松的一道数学题. 这个整除非常不好搞. 但是呢,我们发现 $a[i]$ mod $x$ 可以等价于 $a[i]-\frac{a[i]}{x} \times x$,我们就构造出了公因式,然后推一推就没了. code: #include <bits/stdc++.h> #define ll lon 阅读全文
posted @ 2020-05-26 16:53 EM-LGH 阅读(150) 评论(0) 推荐(0)
摘要:第一次做交互题,感觉挺有趣的. 对于链的部分,可以随机一个点拓展,直到拓展到该点为止. 但是最坏情况下可能每次都要询问两次(每次左右端点都选错). 据说随机化情况下出错的次数大概为 $O( \log n)$ 次. 对于树的部分最暴力的做法是从根节点开始询问,暴力拓展到叶子. 假设钦定一条从根节点向下 阅读全文
posted @ 2020-05-22 12:48 EM-LGH 阅读(197) 评论(0) 推荐(0)
摘要:由于题目要求所选集合大小要大于等于 $\frac{n}{2}$,所以你随便选一个数至少有一半的概率在集合里. 那么我们就随机选 10 个左右的数,成功率是 $1-\frac{1}{2^{10}}.$ code: #include<iostream> #include<cstdio> #include 阅读全文
posted @ 2020-05-17 10:41 EM-LGH 阅读(169) 评论(0) 推荐(0)
摘要:有一个显然错误的做法:依次试着将点加入团内. 但是我们可以随机这个加入顺序,成功率就大大提高了. code: #include <bits/stdc++.h> #define N 506 #define ll long long #define setIO(s) freopen(s".in","r" 阅读全文
posted @ 2020-05-16 19:50 EM-LGH 阅读(181) 评论(0) 推荐(0)
摘要:笛卡尔树好神奇啊! 我们考虑对白色区域维护以最大值为中点笛卡尔树,然后考虑怎么合并左右区间: 令 $f[h]$ 表示最高高度为 $h$ 的最大保留权和,v 表示当前笛卡尔树节点的权值. 考虑如何合并左右区间: 显然,如果要将 $f[y]$ 贡献给 $f[x]$,那么 $x$ 要大于 $y.$ 我们将 阅读全文
posted @ 2020-05-09 16:23 EM-LGH 阅读(422) 评论(0) 推荐(0)
摘要:新学了一下笛卡尔树,这道题是模板题,统计一下以 $x$ 为 lca 的点对就行. 然后统计的话用线段树合并 + 启发式合并就行了. code: #include <bits/stdc++.h> #define N 100006 #define ll long long #define lson s[ 阅读全文
posted @ 2020-05-08 22:14 EM-LGH 阅读(235) 评论(0) 推荐(0)
摘要:题意:给定 $n$ 个点,$m$ 条边的图,求有多少子图满足子图 (即边可以任意定方向或消失)是一个 DAG ? $f(S)=\sum_{T \subseteq S} (-1)^{|T|-1} \binom{|S|}{|T|} f(S-T) 2^{E(S)-E(T)-E(S-T)}$. 这里 $E( 阅读全文
posted @ 2020-05-03 15:12 EM-LGH 阅读(167) 评论(0) 推荐(0)
摘要:题意:给定 $1$ ~ $2^n-1$ 每个数出现的概率. 每次会随机选择一个数字,与手中的数字 or 起来. 求:期望多少次使得手中的数字等于 $2^n-1$. 题解: 考虑 min-max 容斥. $\max(S)=\sum_{T \subseteq S} (-1)^{|T|} \min(T)$ 阅读全文
posted @ 2020-05-03 11:39 EM-LGH 阅读(167) 评论(0) 推荐(0)
摘要:公式:$\max(S)=\sum_{ T\in S} (-1)^{|T|-1} \min(S)$ code: #include <bits/stdc++.h> #define ll long long #define N 23 #define setIO(s) freopen(s".in","r", 阅读全文
posted @ 2020-05-03 10:26 EM-LGH 阅读(171) 评论(0) 推荐(0)
摘要:题意: 给定长度为 $n$ 的数列 $a[1...n]$. 对于 $1$ 到 $M$ 的每个整数 $d$,有多少个不同的数列 $b[1...n]$ 满足: 1. $1 \leqslant b[i] \leqslant M$. 2. $gcd(b[1...n])=d$. 3. 恰好有 $k$ 个位置满 阅读全文
posted @ 2020-04-30 15:26 EM-LGH 阅读(152) 评论(0) 推荐(0)
摘要:神仙 DP. 可以求解 $1$ 号点的答案 $val(1)=w$. 假设所选的 $S$ 集合包含 $w$,那么答案一定为 $1$. 令叶子节点个数为 $m$,则有 $2^{m-1}$ 个集合的答案为 $1$. 假设当前修改代价为 $i$,想让根节点的答案改变. 最优改变方式有两种:1.将小于 $w$ 阅读全文
posted @ 2020-04-29 08:16 EM-LGH 阅读(219) 评论(0) 推荐(0)
摘要:大大大分类讨论,思路还是非常巧妙的. code: #include <bits/stdc++.h> #define ll long long #define lson now<<1 #define rson now<<1|1 #define N 100008 #define mod 99824435 阅读全文
posted @ 2020-04-21 23:00 EM-LGH 阅读(147) 评论(0) 推荐(0)
摘要:有一个条件没看到(每次覆盖的数一定是最大的)我们在这道题中可以只去维护断点(数与数不同的地方) 而由于新的区间覆盖的数字一定是不同于以前的数字,所以这个端点就比较好维护. 对于序列 $p$,覆盖 $[L,R]$ 显然 $1$ ~ $L-2$,$R+1$ ~ $n$ 断点不改变,$L-1$ 与 $R$ 阅读全文
posted @ 2020-04-21 20:24 EM-LGH 阅读(133) 评论(0) 推荐(0)
摘要:比较友好的背包+期望题. 刚开始没特判概率为 0 的情况,WA 了半天. 总是还是挺简单的吧,只要会期望的线性性就行. code: #include <bits/stdc++.h> #define N 207 #define M 203 #define mod 998244353 #define l 阅读全文
posted @ 2020-04-07 13:15 EM-LGH 阅读(186) 评论(0) 推荐(0)
摘要:$f$ 函数暴力计算的话是 $O(n)$ 的(用一个 $\frac{x}{y}$ 来保存每一步计算结果,然后依次合并) 我们将一段区间的结果写成 $\frac{ax+by}{cx+dy}$ 的形式,初始时 $(x=0,y=1)$,然后这样的话就可以将区间分治,然后左右区间合并了. 注意合并的时候要把 阅读全文
posted @ 2020-04-05 08:57 EM-LGH 阅读(187) 评论(0) 推荐(0)

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