hnoi2009专题

bzoj1485 [HNOI2009]有趣的数列

题目链接:bzoj1485 虽然有点很难看,但是我也没有办法,csdn吞我题解啊。 #include<cstdio>#include<cstdlib>#include<cstring>#include<iostream>#include<algorithm>using namespace std;typedef long long LL;#define maxn 500010

bzoj1488[HNOI2009] 图的同构

题目链接:bzoj1488 题目大意: 求两两互不同构的含n个点的简单图有多少种。 简单图是关联一对顶点的无向边不多于一条的不含自环的图。 a图与b图被认为是同构的是指a图的顶点经过一定的重新标号以后,a图的顶点集和边集能完全与b图一一对应。 题解: 置换-ploya 把一条边选和不选看成把一条边染成两种颜色之后,就跟bzoj1478/1815一样了..这样看来就是三倍经验了。 #

「HNOI2009」 梦幻布丁 - 线段树合并

题目描述 N个布丁摆成一行,进行M次操作,每次将某个颜色的布丁全部变成另一种颜色的,然后再询问当前一共有多少段颜色。例如颜色分别为1,2,2,1的四个布丁一共有3段颜色。 输入格式 第一行给出N,M表示布丁的个数和操作次数; 第二行N个数A1,A2…An表示第i个布丁的颜色 第三行起有M行,对于每个操作,若第一个数字是1表示要对颜色进行改变,其后的两个整数X,Y表示将所有颜色为X的变为Y

【HNOI2009】bzoj1488 图的同构

首先可以把问题转化成在完全图上对边进行黑白染色。 对于每个点的置换,要求出有多少关于边的不动点。把置换分解成循环,可以发现,一个长度为 x x的点的循环内部有⌊x2⌋\lfloor\frac x2\rfloor个边的循环,两个长度为 x x和yy的点的循环之间有 gcd(x,y) \gcd(x,y)个边的循环,这样关于边的不动点总数就是 2m 2^m,其中 m m表示边的循环的总数。 但是直接

bzoj 1485 [HNOI2009]有趣的数列 卡特兰数

把排好序的序列看成一对对括号,要把他们往原数列里塞,所以就是括号序合法方案数 即为卡特兰数 f(n)=Cn2nn+1 f(n)=\frac{C_{2n}^n}{n+1} 求的时候为避免除法,可以O(n)计算每个素数出现次数,最后乘起来,打完之后发现其实根本不用快速幂…… #include<cstdio>#include<cstring>#include<iostrea

P4727 [HNOI2009] 图的同构计数

B u r n s i d e : ∣ X / G ∣ = 1 ∣ G ∣ ∑ g ∈ G ∣ X ( g ) ∣ Burnside:|X/G|=\frac{1}{|G|}\sum\limits_{g\in G}|X^{(g)}| Burnside:∣X/G∣=∣G∣1​g∈G∑​∣X(g)∣ 该题: ∣ X / G ∣ = 1 ∣ G ∣ ∑ b 2 k Π ( b i ) Π ( c i