摘要:
题目链接 感觉这个dp还是蛮棒棒的^^ 我们让f[i][j][a][b]=0/1" role="presentation" style="position: relative;">f[i][j][a][b]=0/1f[i][j][a][b]=0/1表示大串中i~j的子... 阅读全文
摘要:
题目链接 题解:我们设f[i]表示权值为i的二叉树的数目,g[i]为i这个值是否在C集合中出现。则很容易得到f[x]=∑i−1xg[i]∑j=0x−if[j]f[x−i−j]" rol... 阅读全文
摘要:
题目大意:你需要求出n个点的简单(无重边无自环)无向连通图的数目模1004535809。n≤130000" role="presentation" style="position: relative;">n≤130000n≤130000。 题解:我们令f... 阅读全文
摘要:
题目传送门 题意:求对于每个i的∑j=1ndis(i,j)k" role="presentation" style="position: relative;">∑nj=1dis(i,j)k∑j=1ndis(i,j)k。 这里有一个公式:xk=ȡ... 阅读全文
摘要:
题目传送门 题意:判断第二类斯特林数的奇偶性。 我自己先打了个表,发现结果挺有意思的,是个分形。 然而还是不会做,去膜了膜题解,发现看不懂,只好手推出来了一个和题解一样的公式。 题解:我们都知道S[i][j]=S[i−1][j−1]+j&... 阅读全文
摘要:
题目链接 题意:n座高楼,高度均不同且为1~n中的数,从前向后看能看到f个,从后向前看能看到b个,问有多少种可能的排列数。 考虑高度为n的那栋楼的位置,n的前方分为f-1组,n的后方分为b-1组,每一组只能看到最高的那一栋楼。我们可以发现只要每一组的每栋楼的高度确定了... 阅读全文
摘要:
题意:给你两个整数N和K,要求你输出N!的K进制的位数。 题解:首先补了一下对数的运算法则。 1.loga(mn)=loga(m)+loga(n)" role="presentation" style="position: relative;">loga(mn)=lo... 阅读全文
摘要:
题目传送门 题解:由于fail[i]一定是i的一个后缀,所以i这个节点对应的状态一定会在fail树中i的子树的所有状态出现。我们只需要对每个询问x,y求出x对应节点子树内有多少个节点在y对应节点到根的路径上出现过。我们先建出trie树,再把AC自动机搞出来(不要建Tr... 阅读全文
摘要:
题解: 先推一波公式。 这是一个容斥原理的式子:S(n,m)=1m!∑k=0m(−1)kCmk(m−k)n" role="presentation" style="position: relative;">S(n,m)=1m!... 阅读全文
摘要:
题目链接 题解:我们设两个手环增加的数相差c,且已经确定好了排列的顺序。 则差异值为∑i=1n(x[i]−y[i]+c)2" role="presentation" style="position: relative;">∑ni=1(x[i... 阅读全文
摘要:
题目传送门 题意:给定n个长度分别为ai" role="presentation" style="position: relative;">aiai的木棒,问随机选择3个木棒能够拼成三角形的概率。 题解:正面可能很不好考虑,所以我们可以反向考虑,考虑用总方案数减去无法... 阅读全文
摘要:
这里是我的省选的各种模板。1.Dijkstra算法题目描述给出一个有向图,请输出从某一点出发到所有点的最短路径长度。输入格式第一行包含三个整数N、M、S,分别表示点的个数、有向边的个数、出发点的编号。 接下来M行每行包含三个整数Fi、Gi、Wi,分别表示第i条有向边的... 阅读全文
摘要:
涂色游戏 题解: 推一推公式。 我们让f[i][j]表示第i列有j种颜色的方案总数,k表示i-1列用了多少种颜色,l表示第i列用了多少种没有在i-1列出现的颜色,G(i,j)表示i个格子涂j种颜色的方案总数。 则f[i][j]=Σ(f[i−... 阅读全文
摘要:
TripleDescription我们讲一个悲伤的故事。 从前有一个贫穷的樵夫在河边砍柴。 这时候河里出现了一个水神,夺过了他的斧头,说: “这把斧头,是不是你的?” 樵夫一看:“是啊是啊!” 水神把斧头扔在一边,又拿起一个东西问: “这把斧头,是不是你的?” 樵夫看... 阅读全文
摘要:
题目链接 题意:给你一个只含a和b的字符串,求不连续的回文子序列的个数。 题解: 在每两个字符之间补上一个特殊字符。我们让f[i]表示i左右两边(包括i)对称(位置及字符相同)的字符的对数,则显然2f[i]" role="presentation" style="po... 阅读全文
摘要:
正在学习FFT。在网上无意逛到了一个特别好的blog,内有FFT、NTT等等的详细证明,在征得博主同意后转载了过来。(其实很大程度上是留给自己看的,做个存档^ ^) 原文链接(感谢博主!) 阅读全文
摘要:
题意:给定n个字符串,询问每个字符串有多少子串(不包括空串)是所有n个字符串中至少k个字符串的子串?(本质相同重复计算) 题解:首先我们把这n个字符串的广义后缀自动机建立出来,然后处理出每个状态出现在n个串的多少个之中。接着把每个串在后缀自动机跑一遍,统计即可。 如何... 阅读全文
摘要:
题目大意: 解法: 二分答案m,转化为判断性问题。 (y[i]+q[j])/(x[i]+p[j])>=m" role="presentation" style="position: relative;">(y[i]+q[j])/(x[i]+p[j])>=m(y... 阅读全文
摘要:
题目传送门 这题和bzoj1492Cash几乎一样,所以这里只贴公式。 f[i]=min(f[j]+c[j]∗(t[i]−t[j]+s))" role="presentation" style="position: relative;">f... 阅读全文
摘要:
题目点这里 题解: 首先,我们会发现,在某一天全部买、全部卖一定比分散买卖更优,因为分散买的话我们可以把它们全部集中到最优的一天买卖,答案一定更优。 设f[i]为第i天卖出全部股票最多能得到的钱。 设第i天用f[i]的钱买x的B卷,rate[i]*x的A卷。 则a[i... 阅读全文
摘要:
题目链接 题解: 首先,我们很容易得出dp方程。让f[i][j][k]" role="presentation" style="position: relative;">f[i][j][k]f[i][j][k]表示在第k段时间里走到(i,j)" role="prese... 阅读全文
摘要:
题目链接 题意:把一个递增数列分成若干组,每组至少k个,每组的花费是这组的数字和减去最小值乘这组的总个数。求最小总花费。 首先,我们想一个朴素的dp方程。把这个序列翻转过来, f[i]表示前i个数的最小花费,方程为: f[i]=min(f[j]+sum[i]−sum[... 阅读全文
摘要:
题目传送门 题解:在文本串上建后缀自动机,用模式串在后缀自动机上跑。扫一遍模式串,在后缀自动机上走,走不了就跳fail再走。 走的过程中,维护模式串与文本串匹配的最大长度,并且统计答案。 怎么统计答案呢? 我们知道,状态x表示的字符串的长度为len[x]" role=... 阅读全文
摘要:
无聊搞了一个蜂鸣器的音乐玩一玩。。。把校歌做了做。 这可以算是一个蜂鸣器音乐的框架了。 目前只有前奏,待更新#include#include#define do1 262 #define re1 294#define mi1 330#define fa1 349#de... 阅读全文
摘要:
传送门 题解: 对于每一个必须用同一个喷头覆盖的区间[s,e],把s+1,e-1覆盖一下。如果某个位置i被覆盖过了,它就一定不能作为一个喷头覆盖的右端点。 让f[i]表示覆盖0..i的最小喷头数量。 dp方程: inf" role="presentation" ... 阅读全文
摘要:
题意:有2个操作。 (1):在当前字符串的后面插入一个字符串 (2):询问字符串s在当前字符串中出现了几次?(作为连续子串) 你必须在线支持这些操作。题解:建后缀自动机。cnt表示当前状态字符串出现的次数。 每插入一个字符串,就把它插进sam里面,再把往上跳fa... 阅读全文
摘要:
题目传送门 xfz学长给我们讲了单调栈和单调队列,这方面内容以前写过PJT4的跳房子等等。 事实上单调栈和单调队列挺好理解的,单调栈是栈内元素单调的栈,单调队列是队内元素单调的队列(废话)。 先写一道非常裸的模板题。这道题以最大值为例,先一次单调队列求出每一行每个位置... 阅读全文
摘要:
题目链接 题解:首先,由于可以变调,我们把字符串每个字符变成相邻两个字符的差。然后跑后缀自动机,得到sa,rnk和height。二分答案k,k表示原字符串的某个不重复公共子串的长度,就变成了判定问题。把所有排名相邻且height>=k-1的字符串分为一组,然后如果这组... 阅读全文
摘要:
传送门 线段树模板题,需要满足区间add和区间set,维护区间和及区间最大值。 有一个非常鬼畜的pushdown,注意必须先处理set标记,再处理add标记,set后要清空add标记。 直接continue结果忘记赋值造成WA的悲剧啊!#include#include... 阅读全文
摘要:
洛谷传送门 大视野传送门 这道题刚开始看上去没有思路,不过慢慢分析有了。 我们设3个数组: a[i]" role="presentation" style="position: relative;">a[i]a[i]表示原来第i个位置上的值。 maxn[i]" rol... 阅读全文
摘要:
[Cerc2014] Virus synthesisDescription你要用ATGC四个字母用两种操作拼出给定的串: 1.将其中一个字符放在已有串开头或者结尾 2.将已有串复制,然后reverse,再接在已有串的头部或者尾部 一开始已有串为空。求最少操作次数... 阅读全文
摘要:
树形dp,就是在树上dp。 解决这类问题的一般步骤 1、确定状态的意思 2、确定状态转移方程 3、确定细节,就是边界和+1-1之类的东西。 这里主要是我树形dp的练习记录。 T1 oiclass1453 二叉苹果树 思路:在dfs的过程中dp。让f[i][j]表示在以... 阅读全文
摘要:
题目链接若专门来看平衡树测速,请略过这一部分,迅速往下!GDKOI将近,蒟蒻的博主来复习平衡树怎么打了。 很伤心的是,开心地写了5种解法后,很多没有1A。看来比赛中对拍还是很重要的。只打了自己会的,非旋Treap什么的早就忘到九霄云外去了! 1 Treap#inclu... 阅读全文
摘要:
题目链接 蒟蒻不会莫队,只好用树套树。 看完这道题,是不是想起了【bzoj2120】数颜色? 如果只是查询l~r区间内的不同数字的个数,就在每个位置记录一个pre值,代表前一个与它相同的位置。这样问题就转化为了l~r之间有多少个位置的pre值 #include#inc... 阅读全文
摘要:
HotelDescriptionThe cows are journeying north to Thunder Bay in Canada to gain cultural enrichment and enjoy a vacation on the sunny s... 阅读全文
摘要:
烁烁的游戏Description背景:烁烁很喜欢爬树,这吓坏了树上的皮皮鼠。 题意: 给定一颗n个节点的树,边权均为1,初始树上没有皮皮鼠。 烁烁他每次会跳到一个节点u,把周围与他距离不超过d的节点各吸引出w只皮皮鼠。皮皮鼠会被烁烁吸引,所以会一直待在节点上不动。 烁... 阅读全文
摘要:
震波Description在一片土地上有N个城市,通过N-1条无向边互相连接,形成一棵树的结构,相邻两个城市的距离为1,其中第i个城市的价值为value[i]。 不幸的是,这片土地常常发生地震,并且随着时代的发展,城市的价值也往往会发生变动。 接下来你需要在线处理M次... 阅读全文
摘要:
这里主要是我虚树的练习记录。 关于虚树的建树,参考了 https://www.cnblogs.com/chenhuan001/p/5639482.html 。感谢!至于为什么虚树建树要打那么长,只是为了方便理解。套路:建虚树后树形DP,或者在建虚树过程中统计答案。fr... 阅读全文