- 博客(125)
- 收藏
- 关注
原创 ARC100F Colorful Sequences
Description给定正整数 n,kn,kn,k 和长为 mmm 的正整数序列 aaa。定义一个序列是 k−k-k− 好序列 当且仅当存在其一个子串是 1∼k1 \sim k1∼k 的排列。求所有长为 nnn 的 k−k-k− 好序列中 aaa 的作为子串的出现次数之和,对 109+710^9 + 7109+7 取模。Solution考试遇到了,感觉不给 aia_iai 互不相同的那个数据范围作为提示这道题会更神仙。去 blog 里学习了一下,感谢 Link。显然好序列中没有相同的数。先
2021-07-20 17:41:12
194
原创 容斥 dp
容斥系数一般是 (−1)∣S∣(-1)^{|S|}(−1)∣S∣。初学容斥原理时都做过这样的一道题。有一张 n×mn \times mn×m 的棋盘,在上面染色,要求任意一行、任意一列的颜色都不完全相同。这是一个模型全部 −-− 至少一个 +++ 至少两个 $- \cdots = \ $一个也没有。所以我们枚举一下有多少行颜色一定相同,有多少列颜色一定相同。可以发现如果只有行或只有列,那么每行(每列)的颜色不一定相同,而同时有行和列就必须是同一颜色。那么用行数 +++ 列数套上容斥系数就行了。其实在
2021-07-19 16:11:47
488
原创 WC Day1 第一课堂 随机算法
设数组含有 nnn 个不同元素,随即快速排序算法的期望比较次数T(n)≤2nlnnT(n) \leq 2 n\ln nT(n)≤2nlnn证明显然随机选取的枢轴元素是等概率的。T(n)=(n−1)+∑i=0n1n(T(i)+T(n−i+1))=(n−1)+∑i=1n2nT(i)T(n) = (n-1)+\sum_{i= 0}^n \frac{1}{n}(T(i) + T(n - i + 1))\\= (n-1)+\sum_{i=1}^{n} \frac{2}{n} T(i)T(n)=(n
2021-02-01 11:11:02
251
原创 概率期望
概率对于一个随机试验,我们把它所有的可能性放在一个集合中。如果两个事件 AAA 和 BBB,满足 A∪B=∅A \cup B = \emptyA∪B=∅,即为 AAA 和 BBB 不能同时发生,那么称这两个事件是互斥的。两个互斥事件 AAA 和 BBB 同时发生的概率 P(A∪B)=P(A)+P(B)P(A \cup B) = P(A) + P(B)P(A∪B)=P(A)+P(B)。如果两个事件 AAA 和 BBB,满足 P(A∩B)=P(A)×P(B)P(A \cap B) = P(A) \time
2021-01-03 16:44:57
372
原创 Pollard Rho 质因数分解
暴力算法这是一个暴力递归分解质因数的伪代码void rp(int n) { if (n 是 质数) n 是 rp 的一个质因子, return; 枚举找到 n 的一个非 1 因子 p; rp(p), rp (n / p);}其中判断质数可以用 Miller Rabin。该暴力复杂度的瓶颈是找因子,如果给定的 nnn 是一个大质数如 109+710^9+7109+7,那么枚举的复杂度就一飞冲天了。生日悖论假设 n=109+7n=10^9+7n=109+7,只有一个非 11
2020-12-31 21:10:16
538
原创 二项式求导
(x+1)n=∑k=0nxk(nk)(x+1)^n = \sum_{k=0}^n x^k {n\choose{k}}(x+1)n=k=0∑nxk(kn)对左右同时求导,把组合数看作系数。n(x+1)n−1=∑k=0nkxk−1(nk)n(x+1)^{n-1} = \sum_{k=0}^n kx^{k-1} {n \choose k}n(x+1)n−1=k=0∑nkxk−1(kn)现在 kkk 的指数还是 111,再次求导,需要用到导函数的乘法法则n((1+x)n−1+(n−1)x(
2020-12-26 20:57:27
2842
1
原创 NOIP T2 字符串匹配
考场上写的是一个常数较大的 O(nlnn)O(n \ln n)O(nlnn),但是犯了一些让自己惊讶的致命错误,挂了一堆分。以下是考场代码,并注释错误。#include <bits/stdc++.h>using namespace std;#define int long long //1. 这个地方 4 倍常数,你不知道要卡时间吗 const int N = 1e6 + 5, Base = 27, p = 1e9 + 7; // 2. 你这个数组大小 2^20 绝对 RE 了 啊
2020-12-13 14:53:22
230
原创 NOIp 膜你赛 第二场
钟神的题目不讲武德。题目按主观难度排序T3区间加法、乘法、覆盖和询问全局每个区间的平均数之和,分数使用逆元。我们发现暴力的两层循环去不掉,所以只能拆贡献,求一下每个数出现了多少次,这个东西预处理一下就有六十分的好成绩。那怎么 O(n)O(n)O(n) 求每个数出现了多少次呢?如果求每个数包含在多少个区间内,这个好算就是左边的长度和右边的长度乘起来,不过现在要求的还有区间长度,找一下规律(用纸画)假设 n=7n = 7n=7 显然它左右是对称的,贡献是一样的,那么我们看看前半部分n=1{1,2,3
2020-12-03 07:41:19
747
原创 CSP-S 2020 儒略日
儒略日大毒瘤模拟,出题人我日你马。以后考场上遇到大模拟,一定不要着急,选择最简单最好写的代码,三思而后行。如果没有把握可以先写部分分,说不定后面的题更简单。在纸上列一下需要注意的地方,写代码时分步调试闰年的计算法则,这个需要写一个函数 [l,r][l,r][l,r] 求 [l,r][l,r][l,r] 之间有多少个闰年。缺失的十天,加上这十天会不会出现进位。数据范围较大,不能模拟,可以循环节或二分。分段处理,端点问题。可惜我对于缺失的十天处理时出现了一点疏忽,导致考场卡在
2020-11-22 21:40:24
705
原创 Gym 101962I Colonial Mansions(二分答案 + 数据结构)
Description给定长度为 nnn 的序列 hhh 和 qqq 次询问1 i H1 \ i \ H1 i H 将 hih_ihi 修改为 HHH。2 i H2 \ i \ H2 i H 询问从 iii 出发可以移动的数的个数。对于 hi,hi+1h_i,h_{i+1}hi,hi+1,它们可以互相移动...
2020-10-24 19:26:43
244
原创 20ZR 普及普专题提高联测 部分题目
排列请问有多少个长度为 nnn 的排列 PPP 满足 ∣i−Pi∣≤1|i-P_i|\leq1∣i−Pi∣≤1,答案对 998244353998244353998244353 取模。考虑第 iii 个位置只有填 iii 或 i−1i-1i−1,所以矩阵加速求斐波那契数列。游走...
2020-10-16 21:32:45
586
1
原创 CSP-S2考前综合强化刷题 Day7
water唯一的签到题,直接按出现次数从小到大排序一下贪心求就行了。circle一个数想要成为逆序对,它等后面的数选了它不选,那么对于后面的一个数情况可能是我不选,它选了,或是我不选,它不选,我不选,它不选,这样无限循环下去,那么第 nnn 次循环其实有 2n−12n-12n−1 不选的概率。那么可以看成一个首项为 p(1−p)p(1-p)p(1−p) 公比是 (1−p)2(1-p)^2(1−p)2 的等比数列,这个东西有无限项,但它的公比小于 111 是可以收敛的。假设你的首项为 aaa 公比为
2020-10-07 12:23:30
184
原创 CSP-S2考前综合强化刷题 Day 6
math求gcd(qa−1,qb−1) mod p\gcd(q^a-1,q^b-1) \bmod pgcd(qa−1,qb−1)modp答案是qgcd(a,b)−1 mod pq^{\gcd(a,b)}-1 \bmod pqgcd(a,b)−1modpcandy给定 a1∼ana_1 \sim a_na1∼an 和 b1∼bnb_1 \sim b_nb1∼bn,第 iii 次选择最小的能被 aia_iai 整除的 bib_ibi 删除,求能删多少次和删了哪些数。这个直接暴.
2020-10-06 14:58:18
173
3
原创 CSP-S2考前综合强化刷题 Day 5
blocks显然每个单位时间会让相邻两个数的差减小 111,也就是说相邻两个数变得相等需要 ai−ai−1a_i - a_{i-1}ai−ai−1 个单位时间,相邻多个数可以看成差的平均数,已知平均数一定比其中一个数大,所以直接 O(n)O(n)O(n) 扫一遍。sort没有相等的,随便贪心一下。大概是把左边和右边排个序,看看把左边最大的几个和右边最小的几个交换,显然你确定了换哪些数,无论你的顺序如何答案是定了的。stringvoid sol(int x, vector <int&
2020-10-05 12:22:18
178
原创 CSP-S2考前综合强化刷题 杂题选做
POI2013 MOR-Tales of seafaring给 nnn 个点 mmm 条边无向图,边权均为 111,每次询问两个点之间是否有长度为 ddd 的路径,可以不是简单路径。因为你可重复经过一个点,所以你可以让一个距离无限加 222 也就是在不改变奇偶性的前提下无限增大。这样我们跑最短路,对于每个点我们接纳第一个偶数最短路和奇数最短路,预处理任意两点这样的两个不同奇偶性的最短路径。询问的时候,看看与它奇偶性相同的最短路径长度是不是比它短即可。Problem 2现在我们要选出一些不相交的线段
2020-10-04 18:57:28
403
原创 CSP-S2考前综合强化刷题 Day4
油箱有 nnn 个城市,每个城市都有加油站,有 mmm条单向道路,距离为 xxx 的道路需要消耗 xxx 升的汽油。请问你的车辆可以携带的最小油箱容量,使得不限加油次数的情况下,无论你在哪个城市都可以到达任意的城市。二分答案,判断所有点在不在一个环上,可以直接 Tarjan,也可以正反建边从 111 号点出发看看能不能到达所有点,可惜我少了特判。求和年度最佳挂分,我的代码怎么被删了?好吧,加上 ans = 就 AC 了。这个题麻烦在于数对是有序的,所以你要分向上和向下考虑一下,我们树上前缀.
2020-10-04 15:17:02
256
原创 CSP-S2考前综合强化刷题 Day3
欢乐求最小的 KKK 使得 K!≥N!K!K!\geq\frac{N!}{K!}K!≥K!N!。loga(M×N)=logaM+logaNlogaMN=logaM−logaN\log _{a}(M \times N)=\log _{a} M+\log _{a} N \\\\\log _{a} \frac{M}{N}=\log _{a} M-\log _{a} Nloga(M×N)=logaM+logaNlogaNM=logaM−logaN比较阶乘的大小可以取对数,因
2020-10-03 16:14:00
287
原创 CSP-S2考前综合强化刷题 Day2
小路灯有 nnn 个小路灯坐标 a1∼ana_1 \sim a_na1∼an,请你点亮 kkk 个小路灯,使得每个小路灯与距离最近的点亮小路灯的距离最大值最小。读错题好评,认为是点亮小路灯间距离最大值最小,还过样例并爆零了。这个大概是你选的小路灯一定是连续的,那么就是一个区间在滑动求区间最小值。读对后好像更简单,二分一下最大值,这样能不点亮就不点亮 check 一下。序列直接暴力~~如果一次交换是 O(1)O(1)O(1) 的,那么复杂度是调和级数,而链表会打乱数组中相邻的顺序。但是,你.
2020-10-02 15:45:29
207
原创 CSP-S2考前综合强化刷题 Day1
阿克挂 240 /dkA有 nnn 张牌,奇数属于第一个人,偶数属于第二个人,两个人轮流按扑克规则进行游戏。指定一个先手,求谁能获胜。以后看见这些简单的找规律题,一定要从下边界开始一个个手玩,不然爆零两行泪。n=2n = 2n=2 时显然谁先手谁获胜,这是一个特殊情况,下面默认 n>2n > 2n>2。当 nnn 为奇数时1 2 3 4 5A 1 3 5B 2 4当 A 先手时,他可以选 111,之后去盖 B。当 B 先手时,它可以选 222,之后去盖 A。当.
2020-10-01 16:37:18
367
原创 20ZR提高组十联测 Day3
cut没啥意义吧。就是一个图一定可以分成两个点集,之间的边个数一定可以超过总边数一半。necklacewyz 神仙吊打 std。举一个 k=2k=2k=2 的栗子。000 -> 111001 -> 10000101 -> 10100如果将连续的 kkk 个相同数称为合法串,那么合法串是可以任意移动的。而且你可以同时移动初始串和目标串中的合法串,因为操作是可以逆的。所以求一下 SSS 和 TTT 的合法串个数,如果相同那么一定有方法把它们抵消掉,所以都删掉。这个过程可以用一
2020-09-13 20:17:57
275
原创 20ZR普及五连测 Day1
排列请问有多少个长度为 nnn 的排列 PPP 满足 ∣i−Pi∣≤1|i-P_i|\leq1∣i−Pi∣≤1,答案对 998244353998244353998244353 取模。设 fif_ifi 为确定了前 iii 位的排列个数,那么第 iii 个位置要不然填 iii,要不然填 i−1i-1i−1,让 i−1i-1i−1 个位置填 iii,所以转移为 fi=fi−1+fi−2f_i = f_{i-1}+f_{i-2}fi=fi−1+fi−2。矩阵加速一下即可。游走显然最深的那条链放
2020-09-13 19:50:48
583
原创 20ZR普专提七连测 Day2
覆盖和 CF280C 一样。因为期望的可加性,所以把子树中所有点被删转换为每个点被删的期望和。即为 ∑x1szx\sum_x \frac{1}{sz_x}∑xszx1。因为卡常,所以朴素的线性求逆元会超时。糖果可以随机化一下,直接过。std 是贪心。你一定选满 ⌊n2⌋+1\lfloor\frac{n}{2}\rfloor + 1⌊2n⌋+1 个,所以把 aaa 从小到大排序,把最后一个数留给你,然后相邻两个数分成一组选 bbb 大的那个。显然这样选保证了你的 bbb 合法,那么考
2020-09-13 15:37:30
225
原创 20ZR提高组十联测 Day2
小W与伙伴招募可以将题意转换为每天商店会对第 iii 个商品补充 bib_ibi 个。贪心地,优先用便宜的方案。
2020-09-06 16:56:20
347
原创 20ZR普转提七连测 Day1
机器人指令进行 d mod 360∘d \bmod 360^{\circ}dmod360∘,讨论一下,发现有四个、两个、一个一循环。然后预处理前四次操作的答案即可,注意对绝对值的处理。逛餐馆如果能确定吃哪些餐馆,当然就是不回头依次吃。那么枚举那个餐馆一定吃,在它之前的餐馆可能吃也可能不吃,二分一下吃耗时最小的多少个餐馆,套个区间前 kkk 大数的和的线段树即可。还有个堆的方法,就是每个餐馆能吃就吃,吃了后看看有没有超限制,如果超过了就弹出堆顶直到满足限制。符文师如果确定了一个数组表示对哪些
2020-09-06 16:29:11
429
原创 20ZR提高组十联测 Day1
stone将 nnn 分成尽可能少的 3k2−3k+1(k≥1)3k^2-3k+1 \quad(k \ge 1)3k2−3k+1(k≥1) 的形式。1≤Q≤1000,1≤n≤10111 \leq Q \leq 1000, 1 \leq n \leq 10^{11}1≤Q≤1000,1≤n≤1011。化简一下式子3k2−3k+1=3k(k−1)+1=6×k(k−1)2+13k^2 - 3k+1 = 3k(k-1)+1 \\= 6 \times \frac{k(k-1)}{2} + 13k2−3k
2020-08-30 18:46:41
351
原创 19ZR十一集训 最短路和生成树
HDU 4479 Shortest path求边权单调递增的最短路。将所有的边一条条加入图中,进行松弛。边权是二的幂的最短路
2020-08-25 16:39:21
207
原创 NOI 2020 部分题目题解
美食家这个数据范围,就是告诉我们这道题要矩阵快速幂。先考虑 k=0k=0k=0。把每个点拆成五个点,那么边权都为 111,然后是一个 Floyd 求最长路。转移是广义的矩阵乘法,满足结合律,可以套上矩阵快速幂。k≠0k\neq 0k=0 我考场的做法比较暴力,直接把美食节的时间排序,分段暴力求。时间复杂度是 O(125×n3×klogT)O(125 \times n^3 \times k \log T)O(125×n3×klogT),55 分走人。矩阵乘法是一个答案矩阵乘上一个转移矩阵,因为我
2020-08-21 15:44:22
651
原创 容斥原理
容斥原理公式∣⋃i=1nAi∣=∑∅≠S⊆{1,2,…,n}(−1)∣S∣−1∣⋂j∈SAj∣\left|\bigcup_{i=1}^{n} A_{i}\right|=\sum_{\emptyset \neq S \subseteq\{1,2, \ldots, n\}}(-1)^{|S|-1} \left|\bigcap_{j \in S} A_{j} \right|∣∣∣∣∣i=1⋃nAi∣∣∣∣∣=∅=S⊆{1,2,…,n}∑(−1)∣S∣−1∣∣∣∣∣∣j∈S⋂Aj∣∣∣∣∣
2020-08-20 20:22:01
221
原创 伸展树 Splay
原理众所周知,fhq treap 代码短小精悍,但是跑的慢。重中之重的是,LCT 与 Splay 有关。所以补一下 Splay 吧。其实 fhq treap 忘光了。fhq treap单旋和 fhq treap 类似的,Splay 也是一棵二叉搜索树,有左小右大的性质。不过 fhq treap 核心操作为合并与分裂,Splay 的核心操作为伸展。伸展即为树旋转,分为左旋 (ZAG) 和右旋 (ZIG)。如图,我们对根结点进行树旋转,可以发现左旋和右旋是对称的以左旋为栗,其实是让绿(右儿子)成为
2020-08-20 15:57:12
225
原创 dp 的优化
单调队列优化斜率优化直接讲比较迷,拿 HNOI2008 玩具装箱为栗子。设 fif_ifi 是装好前 iii 个玩具的花费,枚举从那个玩具开始放。O(n2)O(n^2)O(n2) 的转移方程如下令 si=∑k=1icks_i = \sum_{k=1}^i c_ksi=∑k=1ick 有fi=minj=0i−1fj+(si−sj+i−j−1−L)2f_i = \min_{j=0}^{i - 1} f_j+(s_i-s_j + i - j - 1 - L)^2fi=j=0mini−1
2020-08-11 11:07:15
307
原创 20SD夏令营高级班 简单的网络流和费用流
模板P2756 飞行员配对方案问题求二分图最大匹配,并输出方案。建模比较简单,对于可以匹配的连一条有向边,容量设为 111。再让 SSS 和 TTT 分别与两个点集相连,容量设为 111 或 ∞\infty∞ 即可。while (~scanf("%d%d", &x, &y) && ~x && ~y){ addedge(x, y, 1); addedge(y, x, 0);}for (int i = 1; i <= n; i++) { ad
2020-08-10 08:32:46
155
原创 TJOI2017 可乐(矩阵快速幂)
Description机器人初始在 111 号城市上。机器人有三种行为:停在原地、下一个相邻的城市、自爆。它每一秒都会随机触发一种行为。现在给出图,问经过了 ttt 秒, 机器人的行为方案数是多少?1<t≤109,1≤N≤30,0<M<1001<t \leq 10^{9}, 1 \leq N \leq 30,0<M<1001<t≤109,1≤N≤30,0<M<100Solution地图很小,先建出邻接矩阵。对于停在原地,让 fi,i=1f_{i,
2020-08-07 15:33:18
161
原创 CF1097G Vladislav and a Great Legend(第二类斯特林数 + 树形依赖背包)
Description给定一棵有 nnn 个点的树。对于这棵树的非空节点集合 SSS,令 f(S)f(S)f(S) 表示包含 SSS 中所有节点的最小联通子树的边数。给定 kkk,你需要求∑∅≠S⊆[1,n]f(S)k\sum_{\emptyset \neq S \subseteq [1,n] }f(S)^{k}∅=S⊆[1,n]∑f(S)k2≤n≤105,1≤k≤2002 \leq n \leq 10^{5}, 1 \leq k \leq 2002≤n≤105,1≤k≤200Soluti
2020-08-07 08:38:14
199
原创 第二类斯特林数相关
第二类斯特林数将 nnn 个不同的球放到 rrr 个相同的盒子里,没有空盒。放球的方案数为 S(n,r)S(n,r)S(n,r) 或 {nr}\begin{Bmatrix}n\\r\end{Bmatrix}{nr},称为第二类斯特林数。S(n,r)=rS(n−1,r)+S(n−1,r−1),n>r≥1S(n, r)=rS(n-1, r)+S(n-1, r-1), n>r \geq 1S(n,r)=rS(n−1,r)+S(n−1,r−1),n>r≥1考虑最后一个球怎么放。单独
2020-08-06 09:41:33
257
原创 20ZR暑期联赛班 Day4
shiki一血。序列自动机 + dp。pokemonmatrix有点像逛公园的套路。求一个矩阵上,最长的等比可重路径,满足公比为整数。无限长回答 −1-1−1。其实 −1-1−1 可以特判,只要有相邻的两个比为 111 的就直接特判掉。然后是个分层图了 + bfs。...
2020-08-03 14:19:10
267
原创 20ZR暑期联赛班 Day 2
距离给定平面上的 nnn 个点, 求它们两两之间的切比雪夫距离之和。两点之间的切比雪夫距离定义为 max(∣x1−x2∣,∣y1−y2∣)\max \left(\left|x_{1}-x_{2}\right|,\left|y_{1}-y_{2}\right|\right)max(∣x1−x2∣,∣y1−y2∣)。曼哈顿距离为 ∣x1−x2∣∣y1−y2∣|x_1 - x_2| |y_1-y_2|∣x1−x2∣∣y1−y2∣。那么,切比雪夫距离和曼哈顿距离是可以相互转换的。(x,y
2020-08-02 14:48:37
403
原创 北上广深算法 BSGS
又名百度谷歌算法、拔山盖世算法 其实叫大步小步算法。给定 a,p,b,a, p, b,a,p,b, 求满足 ax≡b(modp)a^{x} \equiv b\pmod pax≡b(modp) 的最小自然数 xxx。普通的 BSGS 假设了 ppp 为质数。令 x=i×m−jx = i \times m -jx=i×m−j,其中 m=⌈p⌉m = \lceil \sqrt{p} \rceilm=⌈p⌉,注意是向上取整。那么原式为ai×m−j≡b(modp)a^{i \times m - j} \eq
2020-08-02 12:28:33
329
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人