自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 SP1480 PT07D - Let us count 1 2 3 题解

题目传送门题目大意: 不写了,LG上翻译就是我提供的……够简洁了吧qwq题解容易发现有标号的话就是裸的 Cayley\text{Cayley}Cayley 公式,可以在我博客里找到,有根的话就再乘多一个 nnn 表示选定一个点做根。无标号的话就是这题,难度跨度有点大……由于 nnn 范围很小而且 ppp 也不是 nttnttntt 模数,所以直接 n2n^2n2 递推即可,代码如下:#include <cstdio>#include <cstring>#include

2020-09-30 15:30:39 165

原创 P5900 无标号无根树计数 题解

题目传送门题目大意: 计算不同的无标号无根树数量。题解先考虑有根的。无标号有根树计数有一个叫 Euler\text{Euler}Euler 变换的东西,在这里,仔细理解它的组合意义,发现他跟有根树计数是很类似的,当你钦定了一个根之后,它的子树之间是无关联的,而子树的大小之和一定是 n−1n-1n−1,那么子树之间就是一个背包问题了,和从若干张连通图中选几张组成图是一样的问题。令 fnf_nfn​ 表示 nnn 个点的有根树有多少种,F(x)F(x)F(x) 为 fff 的 OGF\text{OG

2020-09-30 13:16:17 578

原创 HNOI 2015 落忆枫音 题解

题目传送门题目大意: 给出一个 DAG\text{DAG}DAG,然后往里面加一条额外边 (sx,sy)(sx,sy)(sx,sy),询问有多少棵以 111 为根的外向树。题解先考虑不选额外边的答案,令 did_idi​ 表示 iii 的入度,则答案为 ∏i=2ndi\prod_{i=2}^n d_i∏i=2n​di​,即每个点需要选择一条入边。再考虑选额外边的答案:如果不考虑环,贡献就是 ∏i=2,i≠sydi\prod_{i=2,i\neq sy}d_i∏i=2,i​=sy​di​,再减去其中

2020-09-29 11:11:25 164

原创 HNOI 2011 卡农 题解

题目传送门题目大意: 有一个集合 {1,2,...,n}\{1,2,...,n\}{1,2,...,n},你要选出他的若干个子集组成长度为 nnn 的序列,满足:不存在相同的子集;不能有空集;每种元素在所有子集中出现次数总数为偶数。问有多少个不同的序列——两个序列相同当且仅当 AAA 可以重新排列得到 BBB。题解由于序列中每个子集不同,所以可以先不考虑序列相同的问题,最后使答案除以 m!m!m! 即可。设 f[k]f[k]f[k] 表示长度为 kkk 的满足三个要求的序列数量,转移时考虑用总方案数

2020-09-29 08:53:30 150

原创 SDOI 2017 序列计数 题解

题目传送门题目大意: 有多少个长度为 nnn 的序列满足:每个数字都在 [1,m][1,m][1,m] 内;序列总和为 ppp 的倍数;至少有一个质数。题解至少有一个质数的方案数容易转化成无限制的方案数-一个质数都没有的方案数。令 fif_ifi​ 表示可以使用的数字中,模 ppp 余 iii 的数字个数,那么 [x0]fn[x^0]f^n[x0]fn 就是序列总和为 ppp 的倍数的方案数,这个可以用快速幂,每次暴力卷积来实现。代码如下:#include <cstdio>#inc

2020-09-28 17:12:28 230

原创 洛谷 P6295 有标号 DAG 计数 题解

题目传送门题目大意: 求 nnn 个点的弱连通带标号 DAG\text{DAG}DAG 数量。题解容易发现,对答案的 EGF\text{EGF}EGF 求 exp⁡\expexp 可以得到任意带标号 DAG\text{DAG}DAG 数量,也就是说,求出任意带标号 DAG\text{DAG}DAG 数量再求 ln⁡\lnln 就可以得到答案。令 fnf_nfn​ 表示 nnn 个点的任意带标号 DAG\text{DAG}DAG 数量,考虑枚举 iii 表示至少有 iii 个点入度为 000,容斥一下

2020-09-28 16:22:52 165

原创 CodeForces 961G Partitions 题解

题目传送门题目大意: 有 nnn 个物品,每个物品有一个权值 wiw_iwi​,一个集合的权值为 f(S)=∣S∣∑x∈Swxf(S)=|S|\sum_{x\in S} w_xf(S)=∣S∣∑x∈S​wx​,nnn 件物品的一个划分 RRR 的贡献为 ∑S∈Rf(S)\sum_{S\in R}f(S)∑S∈R​f(S),求所有划分的总贡献。题解容易发现一个柿子:∑i=1nwi∑j=1njCn−1j−1S(n−j,k−1)\sum_{i=1}^n w_i\sum_{j=1}^n jC_{n-1}^

2020-09-27 11:34:24 151

原创 洛谷 P5824 十二重计数法 题解

题目传送门题目大意: 求出 【球相同/球不同】【盒子相同/盒子不同】【无限制/每个盒子至少放一个/每个盒子至多放一个】121212 种搭配下,有多少种不同的方法放球?题解文章目录题解Part 1Part 2Part 3Part 4Part 5Part 6Part 7Part 8Part 9Part 10Part 11Part 12完整代码Part 1mnm^nmn,即每个球随便放。if(type==1){ return ksm(m,n);}Part 2每个盒子只有放和不放两种状态,即

2020-09-26 09:37:53 248

原创 MtOI 2018 魔力环 题解

题目传送门题目大意: 问有多少个长度为 nnn 的不同的环,满足:黑色点数恰好为 mmm,白色点数为 n−mn-mn−m,且不存在连续的 kkk 个以上的黑点。两个环之间假如可以通过旋转相互得到,那么他们就是一样的。题解这种旋转同构的套路肯定先套一手 burnside\text{burnside}burnside 引理,对于一个旋转 iii 位的置换,他会产生 gcd⁡(n,i)\gcd(n,i)gcd(n,i) 个循环,每个循环内颜色要相同,令 f(i)f(i)f(i) 表示有 iii 个循环时的方

2020-09-23 21:05:38 157

原创 SDOI 2013 项链 题解

题目传送门题目大意: 一串合法的项链满足:每颗珠子是一个无序三元组,且三个数都在 [1,M][1,M][1,M] 范围内,它们的 gcd⁡=1\gcd=1gcd=1;相邻的珠子一定不同。另外,如果一串项链能够通过旋转得到另一串项链,那么认为他们是相同的。问有多少种不同的项链。题解容易发现其实题目分为几乎不相关的两部分:求珠子数量;求项链数量。第一部分无序不太好求,转化为求有序三元组数量然后去重,即:三个数互不相同/6+/6+/6+两个数相同/3+/3+/3+三个数都相同,容斥一下变成:三元组方案数

2020-09-23 14:11:14 207

原创 2020牛客暑期多校训练营(第八场)题解

文章目录I. Interesting Computer GameI. Interesting Computer Game有 nnn 组数字,每组两个数,你可以从每组中选一个数,问你最多能选出多少个不同的数。这题看起来酷似网络流,但是你硬跑的话大概是会T飞的。考虑每组内的两个数连边,那么对于一个连通块,如果边数为点数减一(即是棵树),那么能拿的点只有 n−1n-1n−1 个,否则总是能拿完每个点,策略大概就是每次取叶子,有环的话怎么取都行。代码如下:#include <cstdio&gt

2020-09-21 11:00:18 343

原创 2020牛客暑期多校训练营(第十场)题解

文章目录A. PermutationE. GameI. TournamentJ. Identical TreesA. Permutationppp 是一个质数,找到 111 ~ p−1p-1p−1 的排列 aaa,满足 ∀i∈[1,n),2ai≡ai+1(modp)\forall i\in[1,n),2a_i\equiv a_{i+1}\pmod p∀i∈[1,n),2ai​≡ai+1​(modp) 或 3ai≡ai+1(modp)3a_i\equiv a_{i+1}\pmod p3ai​≡ai+1​

2020-09-21 10:58:49 522

原创 牛客挑战赛43 部分题解

A容易发现每一个数分一段是最优的,因为两个数或起来可能变小而绝不可能变大。代码如下:#include <cstdio>#include <cstring>#include <vector>#include <algorithm>using namespace std;int n;int main(){ scanf("%d",&n); long long ans=0; for(int i=1;i<=n;i++){

2020-09-21 10:08:33 259

原创 【LGR-076】洛谷 ⑨ 月月赛 I & Cnoi2020 题解

背景有史以来发挥最好的一次?不过最后卡常能力不行所以完全进不了前三,我还是太菜了……T1容易发现就是找出现次数最多的字母。只贴主要代码了,贴上一些板子会很长,有些函数意义也很明显自己脑补一下就好了:char s[10000010];int t[27];void main(){ scanf("%s",s+1); int n=strlen(s+1); for(int i=1;i<=n;i++)t[s[i]-'a']++; int ans=0; for(int i=0;i&l

2020-09-20 18:58:13 1348 5

原创 2020牛客暑期多校训练营(第九场)题解

文章目录A. Groundhog and 2-Power RepresentationB. Groundhog ans Apple TreeC. Groundhog ans Gmaming TimeD. Groundhog and Golden AppleE. Groundhog Chasing DeathF. Groundhog Looking DowdyI. The Crime-solving Plan of GroundhogJ. The Escape Plan of GroundhogK.The F

2020-09-18 15:26:03 762

原创 2020牛客暑期多校训练营(第七场)题解

文章目录D. Fake NewsD. Fake NewsTTT 组询问,每次问 ∑i=1ni2\sum_{i=1}^n i^2∑i=1n​i2 是不是平方数。题面好评有一个广为人知的柿子:∑i=1ni2=n(n+1)(2n+1)/6\sum_{i=1}^n i^2=n(n+1)(2n+1)/6∑i=1n​i2=n(n+1)(2n+1)/6。也就是说要满足 n(n+1)(2n+1)/6n(n+1)(2n+1)/6n(n+1)(2n+1)/6 是平方数,除法不好解决,先乘上个 363636 变成

2020-09-16 21:41:27 509

原创 Educational Codeforces Round 95 题解

背景T1出了大锅导致unrated了……最后排名在70左右,如果不算橙名及以上的那些,那就排到第10左右了,小号错失一波上分的好机会QAQ……A算一下需要的总木棍数,然后就能算出交易次数,要注意精度问题,需要用long double。代码如下:#include <cstdio>#include <cstring>#include <vector>#include <algorithm>using namespace std;#define

2020-09-15 15:44:54 1152 5

原创 Codeforces Round #670 (Div. 2) 题解

A简单的贪心,就直接上代码了:#include <cstdio>#include <cstring>#include <vector>#include <algorithm>using namespace std;#define maxn 110int T,n,a[maxn],b[maxn];int main(){ scanf("%d",&T);while(T--) { scanf("%d",&n); mem

2020-09-13 19:32:56 227

原创 2020牛客暑期多校训练营(第六场)题解

文章目录B. Binary VectorC. Combination of Physics and MathsE. Easy ConstructionG. Grid ColoringK. K-BagB. Binary Vector问你随机选出 nnn 个 nnn 维向量,他们线性无关的概率是多少,要求选出的向量每一维只能是 000 或 111。假设现在已经选出 iii 个线性无关的向量了,那么这 iii 个向量一定张成了一个 iii 维的空间,在这个 iii 维空间内任意向量都可以被这 iii 个

2020-09-07 16:35:27 689

原创 Codeforces Round #668 (Div. 1) 题解

A容易发现一个结论:每隔 kkk 位的字符应该是相同的。于是就可以确定这个字符串的一部分。剩下的部分只需要保证 字符串前 kkk 个字符中 010101 数量相同即可,剩下的 ? 也就确定了,代码如下:#include <cstdio>#include <cstring>#include <vector>#include <algorithm>using namespace std;#define maxn 300010int T,n,k;

2020-09-07 16:21:33 449

原创 2020牛客暑期多校训练营(第五场)题解

文章目录A. PortalB. GraphD. Drop VoicingE. Bogo SortF. DPSI. Hard Math ProblemA. Portal给一张 nnn 个点 mmm 条边的无向图,边有长度,有 kkk 个任务,每个任务要去 aia_iai​ 捡一个物品送到 bib_ibi​,你可以开传送门,每个时刻最多只能有两个传送门,你可以随时在脚下开个传送门,也可以随时关闭图中任意一个传送门,假如你脚下有一个传送门,你可以从这个传送门无代价地走到另一个传送门,求按顺序完成所有任务的最

2020-09-03 10:49:10 909

原创 Codeforces Round #666 (Div. 1) 题解

A假设第三次操作范围是 [1,n][1,n][1,n],那么前两次操作的目标就是把每个数变成 nnn 的倍数。假设前两次目标的操作范围都是 bbb,那么对于每个数 aaa,需要找到一个 xxx,满足 a+bx≡0(modn)a+bx\equiv 0\pmod na+bx≡0(modn),即 x≡−abx\equiv -\dfrac a bx≡−ba​,那么就需要保证 bbb 在模 nnn 意义下有逆元,所以 bbb 需要是个质数。而两次操作要覆盖整个序列,所以 b>n2b>\dfrac n

2020-09-01 18:54:14 311

原创 51nod 1737 配对 题解

题目传送门题目大意: 给出一棵树,两个点配对的贡献是两点间的距离,求最大贡献和。题解出于某些原因来水一下这题题解,如果你是从超链接来的大概就知道原因了qwq。思路是贪心,对于每条边,他的贡献次数为 它连接的两棵子树中 较小的子树的大小,显然这是它的最大贡献次数,需要证明的是:总是存在一种方案使得每条边的贡献次数都是最大的。下面给出一种方案:对于一条边,要贡献满的话,就要将小的子树的点全部和大的子树的点进行配对,不妨想象一下小的子树的点全部跑到了大的子树的根节点,那么最后所有点都会汇集在树的重心,每

2020-09-01 11:11:21 463

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除