20200308模拟赛

T1.开屏雷击:
Bitset Master
20200308模拟赛_第1张图片

O ( n m ) O(nm) O(nm)暴力。
出题人开了时限 6 s 6s 6s,然后心机的让 m = 3 n m = 3n m=3n
奈何 O ( n m ) O(nm) O(nm)跑过了 n = 30000 n = 30000 n=30000的点。
O ( n m w + n 2 ) O(\frac {nm}w + n^2) O(wnm+n2)算法:
每次合并的时候同时维护一个 u u u被多少个节点 v v v包含。
合并可以用 b i t s e t bitset bitset优化成 O ( n m w ) O(\frac {nm}w) O(wnm),
合并 u , v u,v u,v时可以考虑求出 S ( u ) x o r S ( v ) S(u) xor S(v) S(u)xorS(v)也就是集合中不同的点,然后对这些点维护一个 u u u被多少个节点 v v v包含,总共只会维护 O ( n 2 ) O(n^2) O(n2)次。
O ( m ) O(m) O(m)的解决先做完所有修改再询问的数据点的算法:
详见
O ( ( n + m ) log ⁡ 2 n ) O((n+m)\log^2 n) O((n+m)log2n)正解:
20200308模拟赛_第2张图片
这个这个,。。就是就是。。。。
离线分治回答询问,
维护时间点因为总变化量是 O ( m ) O(m) O(m)
所以是需要快速找,暴力修改。

T2:在这里插入图片描述
20200308模拟赛_第3张图片
完全图(要写矩阵快速幂):

	if(m==n*(n-1)/2)
	{
		mat t;t.a[0][0]=0;t.a[0][1]=P-1;t.a[1][0]=1;t.a[1][1]=n+2;
		t=pw(t,k);int s=t.a[1][0];
		printf("%d\n",1ll*pw(n,n-2)*pw(s,n-1)%P);
		return 0;
	}

n < = 5 n<=5 n<=5
B M BM BM
(不知道 ( n ∗ 100 ) 4 (n*100)^4 (n100)4怎么过的。)

下面:
数理知识20200308模拟赛_第4张图片
笛卡尔积:
20200308模拟赛_第5张图片
说人话:你不需要知道什么是笛卡尔积。
20200308模拟赛_第6张图片
很牛逼,我们又证明了一次某C定理。
20200308模拟赛_第7张图片
20200308模拟赛_第8张图片
在这里插入图片描述
20200308模拟赛_第9张图片
20200308模拟赛_第10张图片
20200308模拟赛_第11张图片
20200308模拟赛_第12张图片
20200308模拟赛_第13张图片
20200308模拟赛_第14张图片20200308模拟赛_第15张图片
这题就是不想让人过的。
resultant:上面的PPT中有,具体就是对特征值的操作什么的。
20200308模拟赛_第16张图片
PS: 如果这个题是复制 k k k个图然后两两对应编号连边就简单多了,只需要求两次行列式即可简单个锤子
20200308模拟赛_第17张图片
T3:求 ∑ x = 1 n lcm ( x , x + 1 , … , x + k ) \sum\limits_{x = 1}^n \textrm{lcm}(x, x + 1, \dots, x + k) x=1nlcm(x,x+1,,x+k) 1 e 9 + 7 1e9+7 1e9+7 取模的结果。
在这里插入图片描述

猜想 x ∗ ( x + 1 ) ∗ ⋯ ∗ ( x + k ) x* (x + 1)* \dots*(x + k) x(x+1)(x+k) lcm ( x , x + 1 , … , x + k ) \textrm{lcm}(x, x + 1, \dots, x + k) lcm(x,x+1,,x+k)有关。
f ( x ) = x ∗ ( x + 1 ) ∗ ⋯ ∗ ( x + k ) lcm ( x , x + 1 , … , x + k ) f(x) = \frac {x* (x + 1)* \dots*(x + k)}{\textrm{lcm}(x, x + 1, \dots, x + k)} f(x)=lcm(x,x+1,,x+k)x(x+1)(x+k)
容易发现 f ( x ) f(x) f(x)是有周期的。
并且发现 16 16 16的周期是 720720 720720 720720,就可以愉快的拉格朗日插值 O ( k 2 ∗ 720720 ) O(k^2*720720) O(k2720720)得到 70 p t s 70pts 70pts.
可以 O ( k ∗ 720720 ) O(k*720720) O(k720720)
可以把求答案的式子化成 ∑ i = 0 n − r L c i ( L ∗ i + r k + 1 ) \sum_{i=0}^{\frac {n-r}L} c_i\binom{L * i + r}{k+1} i=0Lnrci(k+1Li+r)的形式。
再范德蒙德恒等式:
∑ i = 0 n − r L c i ∑ j = 0 i ( L ∗ i j ) ( r k + 1 − j ) = ∑ j = 0 i ( r k + 1 − j ) ∑ i = 0 n − r L c i ( L ∗ i j ) \sum_{i=0}^{\frac {n-r}L} c_i \sum_{j=0}^i \binom{L * i}{j} \binom{r}{k+1-j} = \sum_{j=0}^i \binom{r}{k+1-j}\sum_{i=0}^{\frac {n-r}L} c_i\binom{L * i}{j} i=0Lnrcij=0i(jLi)(k+1jr)=j=0i(k+1jr)i=0Lnrci(jLi)
对于这个题 n − r L \frac {n-r}L Lnr只有2个取值,所以预处理后面的 Σ \Sigma Σ然后就可以 O ( k ) O(k) O(k)算了。
发现 f ( x ) f(x) f(x)的质因数 ≤ k \leq k k
猜想: f ( x ) f(x) f(x) p ( p r i m e ) p(prime) p(prime)的次数和 x ( m o d p e ) x\pmod {p^e} x(modpe)有关20200308模拟赛_第18张图片
然后就把 1...30 1...30 1...30的质数分成两组。
然后 L L L就是 3 e 5 3e5 3e5的级别,然后双指针套卷积合并组合形式幂级数的式子就可以卡过了。
牛逼做法

还需要优化:
如: k = 15 , ( m o d 13 ) k = 15 , \pmod {13} k=15,(mod13)时。
20200308模拟赛_第19张图片
基础贡献加入反例,贡献乘起来,我在复读
就是把 x ( m o d p e ) x \pmod {p^e} x(modpe) p e p^e pe类强行用人类智慧减少讨论范围, k = 25 k=25 k=25时只有 4 e 5 4e5 4e5项容斥系数,可以直接过。
20200308模拟赛_第20张图片

取模卡常小技巧

for
f += a * b
(f>=p^2) && (f -= p^2)
endfor
f %= p;

好像。。

你可能感兴趣的:(20200308模拟赛)