- 博客(63)
- 收藏
- 关注
原创 题解 P8757 [蓝桥杯 2021 省 A2] 完美序列
是多少,显然对于一个完美子序列,第一个元素的质因数越多,它往后能延伸的完美子序列最长。而什么样的数质因数最多呢?易证可能的情况就只有这两种。因为题目非常良心,不让求方案数只让求和,所以我们设。个位置作为完美子序列,阶乘代表着其他位置可以随便放置。感觉难度应该就绿,在学校五分钟想出来了。然后再来考虑怎么构造出长度为。
2022-11-01 19:17:24
588
原创 题解 [Codeforces1156D] 0-1-Tree
题目来源:Codeforces Educational Round #64tag:树形 DP,计数。
2022-08-28 09:24:31
180
原创 题解 [CodeForces1705D] Mark and Lightbulbs
现在来考虑步数问题。一次操作现在看起来是什么令一个连续极长。全部都不能改变,所以可以得出对一个连续极长的。段向任意一侧扩张一格,或从任意一侧缩小一格。段从左往右一一对应。那么我们的目标就是把。答案很显然设对应段在。段,不能将它拆分长两个连续极长的。段,显然在这一段中,只有两端的。段经过若干次扩张、缩小从而变成。同理,对于两个中间只隔有。所以得出结论若一个串。当然,还要再判断一下。...
2022-07-18 10:10:40
192
原创 题解 [CF327C] Magic Five
luogu 题目链接这种题都要写好久,wtcl。下文下标从 000 开始。nnn 为原序列长度。考虑 k=1k=1k=1 的情况,显然要以 或 结束,前面随便选多少个,后面全不选。若前面有 ppp 个数,方案数为 2p2^p2p。若 k≠1k\neq 1k=1,设 mul=∑i=0k−12inmul = \sum\limits_{i=0}^{k-1}2^{in}mul=i=0∑k−12in,答案乘上 mulmulmul 即可。为什么呢?若原序列中第 ppp 位为 或 ,那么总序列中它会出现在 p
2022-07-10 11:06:24
174
原创 OI模板 AC自动机
OI模板 AC自动机trie 树上算失配指针,感觉和kmp没啥关系简单版://P3808#include <bits/stdc++.h>using namespace std;const int N = 1e6 + 10;struct AhoCorasick_Automaton{ struct node{ int ch[26], end, fail; } T[N]; int cnt; void init(){ for(int i = 0; i < N; ++ i)
2022-05-27 21:36:45
146
原创 题解 [POI2011][LuoguP3514] LIZ-Lollipop
link已知可以得到 kkk 的方式 (l,r)(l,r)(l,r),就一定有得到 k−2k-2k−2 的方式:若 al=2a_l=2al=2,则取 (l+1,r)(l+1,r)(l+1,r)若 ar=2a_r=2ar=2,则取 (l,r−1)(l,r-1)(l,r−1)否则 al=ar=1a_l=a_r=1al=ar=1,取 (l+1,r−1)(l+1,r-1)(l+1,r−1)所以我们求出能得到的最大奇数和最大偶数,设数列总和为 SSS,则 SSS是什么数(奇或偶),那么最大什么
2022-05-25 09:50:37
122
原创 题解 [SP7579] YOKOF - Power Calculus
题解 [SP7579] YOKOF - Power CalculusLuogu Link题目显然可以转化为:给出正整数 nnn,若只能使用加法或减法,输出使 111 经过运算(自己加或减自己,以及加或减运算过程中产生的中间结果)变成 nnn 的最少步数。使用 IDDFS 求解。IDDFS,即迭代加深的 DFS,就是在 DFS 过程中添加一个“最大深度值”,每次 DFS 时如果递归深度大于这个值就强制结束递归。如果没搜到答案,就令最大深度值 +1+1+1,继续搜一遍。这样虽然会重复搜搜索树上浅层
2022-05-15 12:46:14
195
原创 题解 [LuoguP4588][TJOI2018] 数学计算
题解 [LuoguP4588][TJOI2018] 数学计算link属于是没有区间的线段树了。以时间为轴建线段树,如果第 iii 个操作是 111,把第 iii 位乘上 mmm;如果是 222,把第 mmm 位改为 111。查询就直接输出根节点。//P4588#include <bits/stdc++.h>using namespace std;const int N = 1e5;int t, Q, op; long long M, T[N<<2], m;vo
2022-05-14 22:08:34
151
原创 题解 [LuoguP4839] P哥的桶
Link \rule{20pt}{15pt}\kern{-16.5pt}\color{white}\raisebox{4.7pt}{\footnotesize\sf Link} Link单点修改,区间查询,可以想到线段树。然后在线段树的每一个节点上套一个线性基维护即可。记得:线性基查询/合并一定要从大到小遍历。//P4839 need O2#include <bits/stdc++.h>using namespace std;const int N = 5e4 + 10;inl
2022-05-11 22:39:36
126
原创 题解 [LuoguP8320]『JROI-4』Sunset
题解 P8320 『JROI-4』Sunsetlink发现第二种操作“使 aia_iai 为 000”,一旦操作了就不能再反悔,我们就永远失去了对这个数字原本的值的所有信息。因此这个操作的作用只有:在计算完这个数字的值后,消除这个数字对其他数字的影响,转而计算其他数字的值。因此我们考虑每次计算出序列最大值,然后把该最大值变为 000,之前的次大值就变成了现在的最大值,计算 nnn 次即可还原整个序列。看到 nnn 最大为 500500500,操作次数最大为 550055005500,所以每次计算最
2022-05-02 11:12:34
158
原创 题解 [LuoguP8319]『JROI-4』分数
题解 P8319 『JROI-4』分数link受上场月赛的 B 启发,设 xxx 的最小因数为 yyy,则血书女装过程为:0x→1x→...→yx,1x/y→2x/y→...\displaystyle\frac 0x\to \frac1x\to...\to\frac yx,\frac1{x/y}\to\frac2{x/y}\to...x0→x1→...→xy,x/y1→x/y2→...然后 1x/y\frac1{x/y}x/y1 后面的步骤数就是 f(x/y)−1f(x/y)-1f(x
2022-05-02 11:11:19
280
原创 题解 [CSP-S2019 江西][LuoguP5689] 多叉堆
link设两棵多叉树 U,VU,VU,V,其根节点为 u,vu,vu,v,大小为 sizU,sizVsiz_U,siz_VsizU,sizV,各自的答案为 wU,wVw_U,w_VwU,wV。若此时把 UUU 合并到 VVV 上,此时的根节点 vvv 只能填 000,下面分成了两块:一块 sizUsiz_UsizU 个,一块 sizV−1siz_V-1sizV−1 个,两块不影响。所以答案为 wU×wV×Cnmw_U \times w_V \times C_n^mwU×wV×Cnm。然
2022-04-30 16:34:40
314
原创 题解 [LuoguP4974] 毒瘤之神秘通道
题解 [LuoguP4974] 毒瘤之神秘通道link题意原题面有点乱,这里补充个简易题面:一棵 mmm 个节点的树,初始边权为 000,根节点为 000;有 nnn 个操作,第 iii 个操作给出 ai,bia_i,b_iai,bi,把路径 a→0a\to0a→0 上的边权值分别加上 bib_ibi;定义 u→vu\to vu→v 的路径长度为路径 u→vu\to vu→v 上的边权值和;求出 0→ai0\to a_i0→ai 的路径长度最小值,若有多个最小值,输出 aia_iai
2022-04-30 12:08:41
128
原创 OI模板 卢卡斯定理
卢卡斯定理 / Lucas\text{Lucas}Lucas定理现有问题:给定整数 n,m,pn,m,pn,m,p,求 (nm) mod p\dbinom{n}{m}\bmod p(mn)modp,保证 p∈Pp\in\mathbb{P}p∈P。1≤n,m,p≤1051\leq n,m,p \leq 10^51≤n,m,p≤105。可以用 Lucas 定理解决。定义对于 p∈Pp\in\mathbb{P}p∈P,有 (nm) mod p=(⌊n/p⌋⌊m/p⌋)×(n mod pm mo
2022-04-26 11:42:16
198
原创 OI模板 网络流模型
网络流模型网络最大流一张图,求从源点到汇点的最大流量。Dinic\text{Dinic}Dinic注意:如果原图为无向图,正反边权值都要设为 www。const int N = 210, M = 1e4 + 10, Inf = 1 << 29;int Head[N], Edge[M], Leng[M], Next[M], tot = 1;int dep[N], now[N];void addedge(int u, int v, int w){ Edge[++tot] =
2022-04-26 11:40:46
246
原创 OI模板 最大匹配
最大匹配(二分图、一般图)二分图最大匹配匈牙利算法const int N=510;int n,m,e,Match[N],u,v,ans;bool Vis[N],E[N][N];inline int dfs(int x){ for(int i=1; i<=m; ++i) if(!Vis[i] && E[x][i]){ Vis[i]=true; if(!Match[i] || dfs(Match[i])){ Match[i]=x; retur
2022-04-26 11:39:43
112
原创 OI模板 分数规划
分数规划分数规划用来求一个分式的极值:给出 ai,bia_i,b_iai,bi,求一组 wi∈{0,1}w_i\in\{0,1\}wi∈{0,1} 使 ∑i=1naiwi∑i=1nbiwi\displaystyle\frac{\sum_{i=1}^n a_iw_i}{\sum_{i=1}^n b_iw_i}∑i=1nbiwi∑i=1naiwi 最小化或最大化,再加上一些奇怪的限制。所以背包、树形背包、最小生成树、最短路、二分图最大匹配等问题都可以套个分数规划变得毒瘤。求解二分求
2022-04-26 11:38:40
253
原创 OI模板 Tarjan与连通性
Tarjan\text{Tarjan}Tarjan 与连通性补充(很重要):关于tarjan的一些大问题:tarjan中low数组的一个问题:if(!dfn[v]){ tarjan(v); low[u] = min(low[u], low[v]);} else low[u] = min(low[u], dfn[v]);这里如果v是u的父亲,那么low[u]就能被dfn[v]更新。如果求强连通分量和割点没什么问题,但在求割边的时候就有问题。割边的判断法则是 low[v]>d
2022-04-26 11:37:19
160
原创 OI模板 树状数组
OI模板 树状数组树状数组-单点加、区间和const int N=1;struct BIT{ int bit[N],a[N],n; #define lowbit(x) ((x)&(-(x))) inline void build(){ for(int i=1; i<=n; ++i){ bit[i]+=a[i]; int j=i+lowbit(i); if(j<=n) bit[j]+=bit[i]; } return; } inline voi
2022-04-26 11:34:33
133
原创 OI模板 后缀数组
OI模板 后缀数组Build SA&RKconst int N = 1;int SA[N], RK[N], n, m;int pre[N], cnt[N];char str[N];void BuildSA_RK(){ m = 122; for(int i = 1; i <= n; ++ i) RK[i] = str[i], ++ cnt[RK[i]]; for(int i = 2; i <= m; ++ i) cnt[i] += cnt[i-1]; for(int i
2022-04-26 11:33:01
237
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人