摘要: ##题目 [HNOI2008]越狱 ##想法 以后这种题目考虑容斥 正着不做我们考虑全集减补集 补集就是相邻的人都不信仰同一宗教 易得 \(ans\ =\ m ^ n\ - m * (m\ -\ 1) ^ {n\ -\ 1}\) ##代码 #include<iostream> #include<cs 阅读全文
posted @ 2021-01-08 21:04 fhq_treap 阅读(64) 评论(0) 推荐(0) 编辑
摘要: ##题意 求这个$\sum\limits_\sum\limits_lcm(i,j) \mod (20101009)$ ##想法 以下$n > m$ 在物理课上推出了柿子(逃 回家了拍草稿纸上来 \(\sum\limits_{i = 1}^{n}\sum\limits_{j = 1}^{m}lcm(i 阅读全文
posted @ 2021-01-08 20:49 fhq_treap 阅读(74) 评论(0) 推荐(0) 编辑
摘要: ##题意 求$\sum\limits_in\ \sum\limits_jm\ d(ij)$其中$d(x)$为$x$的约数个数 ##想法 看到这个柿子想到的就是莫反了。 有这样一个结论 $ d(xy)= \sum\limits_{i|x} \ \sum\limits_{j|y}[gcd(i,j) == 阅读全文
posted @ 2021-01-08 13:29 fhq_treap 阅读(72) 评论(0) 推荐(0) 编辑
摘要: ##题意 反素数 ##想法 证明这样一个结论 对于一个可行的反素数$p$ \(p = \sum_{i}^{k} p_{k} ^ {c_k}\) 当 \(p_i > p_j 有 c_i < c_j\) 反证法 若$p_i > p_j 有 c_i > c_j$则交换$c_i 与 c_j$得到一个新数$s 阅读全文
posted @ 2021-01-07 13:44 fhq_treap 阅读(88) 评论(0) 推荐(0) 编辑
摘要: ##题意 求$\sum_^ gcd(i,n)$ ##想法 套路题 \(\sum_{i}^{n} gcd(i,n)\) \(=\) \(\sum_{i,i | n} i * phi(n/i)\) 枚举$i$暴力求$phi$ ##代码 #include<iostream> #include<cstdio 阅读全文
posted @ 2021-01-07 13:36 fhq_treap 阅读(60) 评论(0) 推荐(0) 编辑
摘要: ##题意 求最小的$x$满足$a^x \equiv b\mod p$ ##想法 这个是标准的板子题,$BSGS$算法可以用来解决$ax \equiv b\mod p$ 和 $xa \equiv b\mod p$问题 本题是前者 我们考虑这样 \(a^{A * \sqrt p - B} \equiv 阅读全文
posted @ 2021-01-07 13:26 fhq_treap 阅读(79) 评论(0) 推荐(0) 编辑
摘要: ##题意 题目链接 ##想法 顺着做网络流24题看到的 起初原本以为是费用流 后来看到$n ⇐ 20$.. 状压走起 这题状压还是很明显的,$b1,b2,f1,f2$都明显压缩,初始状态$(1 << n) - 1$ 目标状态$0$ 这题因为点数太多,直接建边的话空间代价太大,我们选择对每个点都跑一个 阅读全文
posted @ 2021-01-06 21:53 fhq_treap 阅读(68) 评论(0) 推荐(0) 编辑
摘要: (2021的第一篇博客,当鸽子好久了,开始沉淀) ##题意 给定一些$01$串,问是否存在一个任意长的$01$串不包含所给的任意一个$01$串 ##想法 因为有多个文本串,所以明显考虑$AC自动机$,不同的是这次是要我们来找原串,我们可以发现将$trie$树进行$fail$边匹配的时候 其实是把树扩 阅读全文
posted @ 2021-01-06 20:55 fhq_treap 阅读(66) 评论(0) 推荐(0) 编辑
摘要: 题目链接 我们不妨先考虑只有一行的情形。 我们做两个前缀和$red_i,bule_i$分别表示前$i$个里有多少个红色块和蓝色块。 设$f[i][k]$为做到第$i$块,此时用了$k$次涂刷的最大收益。 我们思考如下问题:既然重复涂色没有收益,那么我们强制让我们的涂色方案没有重叠的情况,即让我们对于 阅读全文
posted @ 2020-12-09 20:32 fhq_treap 阅读(84) 评论(0) 推荐(0) 编辑
摘要: 很不错的一个构造题呢 ! 更好的阅读体验 细节挺多的,大概在如下几点: 判断是 \(NO\) 的情况 \(p = 0\) 的情况 现在我们来讨论一下,我们先让前$P$个人都是最大值所有者,我们计算一下他们的最大值: ll maxx = std::min(k / p,m); 我们依据我们算出的这个最大 阅读全文
posted @ 2020-11-28 20:21 fhq_treap 阅读(62) 评论(0) 推荐(0) 编辑