摘要:
题面 Description 我们讲一个悲伤的故事。 从前有一个贫穷的樵夫在河边砍柴。 这时候河里出现了一个水神,夺过了他的斧头,说: “这把斧头,是不是你的?” 樵夫一看:“是啊是啊!” 水神把斧头扔在一边,又拿起一个东西问: “这把斧头,是不是你的?” 樵夫看不清楚,但又怕真的是自己的斧头,只好 阅读全文
摘要:
"传送门" 解题思路 首先题目要求的其实就是$\sum\limits_{i=1}^n \sum\limits_{j=1}^m [(gcd(i,j) 1) 2+1)]$,然后变形可得$ n m+2\sum\limits_{i=1}^n \sum\limits_{j=1}^m gcd(i,j)$。所以本 阅读全文
摘要:
"传送门" 解题思路 比较好想的思路题。首先肯定要把原序列转化一下,大于$k$的变成$1$,小于$k$的变成$ 1$,然后求一个前缀和,还要用$cnt[]$记录一下前缀和每个数出现了几次,然后统计答案的时候从$1$循环到$k$,每次转化为前缀和相减即可。 代码 cpp include include 阅读全文
摘要:
"传送门" 解题思路 NOIp前看到的一道题,当时想了很久没想出来,NOIp后拿出来看竟然想出来了。注意到有递推$f[i]=f[i 1] poww[i]+i$,$f[i]$表示$1 i$连接起来组成的数字,$poww[i]$表示$10$的$i$的位数次幂,发现这个可以用矩阵快速幂优化,$[f[i], 阅读全文
摘要:
题面 Description 话说练习后缀数组时,小C 刷遍 poj 后缀数组题, 各类字符串题闻之丧胆。就在准备对敌方武将发出连环杀时,对方一记无中生有,又一招顺 手牵羊,小C 程序中的原字符数组就被牵走了。幸运的是,小C 早已经求出了 SA[],为了 能东山再起,迅速 A 掉此题,他希望各位忠臣 阅读全文
摘要:
"传送门" 解题思路 $orz$出题人的神仙做法。本蒟蒻看不懂,就水个求补图再二分图染色的方法来$%1%$出题人。 首先我们对图中$m$个关系连边,发现这样是没法做的,因为我们最后要关注的是谁和谁不能在一起,这个限制是比较大的。所以我们考虑建一个补图,就是把原来没有的边加边,原来存在的边断掉。这样$ 阅读全文
摘要:
"传送门" 解题思路 看到一个子串加一个数字到另一个子串,自然可以想到差分。然后要把所有串都拼起来,求出$height$数组后可以二分答案来做,每次二分一个答案后统计一下连续的$height =$二分出答案的段是否将每个串都涵盖。 代码 阅读全文
摘要:
"传送门" 解题思路 后缀数组求本质不同串的裸题。$ans=\dfrac{n(n+1)}{2} \sum height[i]$。 代码 cpp include include include include include using namespace std; const int MAXN = 阅读全文
摘要:
"传送门" 解题思路 题目其实就是动态维护本质不同的串的个数。考虑到只有加数字的操作,所以可以用后缀数组。题目是每次往后加数字,这样不好处理,因为每次加数字之后所有的后缀都会改变。所以要转化一下思路,就是将序列翻转,这样的话每次操作都是加入一个后缀,而对于一个串来说,本质不同的串的个数$ans=\d 阅读全文
摘要:
"传送门" 解题思路 首先门其实形成了若干个环,每次可以将这个环内的所有门都打开。这样就可以想到第一类斯特林数,设$f[i][j]$表示把前$i$个数字划分成$j$个环的方案,$f[i][j]=(i 1)f[i 1][j]+f[i 1][j 1]$。然后注意还要把不能炸第一个这个条件考虑到。最后的答 阅读全文