摘要:
CF61E Enemy is weak 如下图,第\(i\)行\(j\)列表示第\(j\)个数结尾,向前长度为\(i\)的逆序子序列个数。 递推方式见下图。 第一行全为\(1\)。 要填第\(2\)行的值,就往前找所有\(>\)当前元素的位置,把它们第\(1\)行的值加起来。 要填第\(3\)行的值 阅读全文
CF61E Enemy is weak 如下图,第\(i\)行\(j\)列表示第\(j\)个数结尾,向前长度为\(i\)的逆序子序列个数。 递推方式见下图。 第一行全为\(1\)。 要填第\(2\)行的值,就往前找所有\(>\)当前元素的位置,把它们第\(1\)行的值加起来。 要填第\(3\)行的值 阅读全文
可恶,卡常好难受。 P5431 【模板】模意义下的乘法逆元 2 将分数通分,第\(i\)个分数是\(\frac{k^i*fac\div a[i]}{fac}\),\(fac\)表示所有元素的积。 我们可以用\(lr,rl\)记录\(a\)的前缀后缀积,第\(i\)个分数就是\(\frac{k^i*l
赛时心态崩了,0pts遗憾离场……今天在学校冷静思考了下。发现B题思路其实很简单,不过A题怎么也没有想到,回来看了题解,其实思路也很简单,不过是自己思考方向错了。看来打比赛心态很重要,如果能冷静下来思考结果会好很多。 果然算法竞赛不能被常理所束缚(笑) A - 01 Matrix Again 行列从
一些题目在涉及到超大整数运算时,往往会要求我们把答案取模一个值,比如\(998244353\)、\(10^9+7\)等等。如果我们的计算只有\(+,-,*\),直接现算现取模即可: (a + b) % mod = (a % mod + b % mod) % mod (a - b) % mod = (
ABC209F Deforestation 首先我们可以思考\(a_i\)和\(a_{i+1}\)先砍哪棵花费少。 可以看出,当\(a[i]<a[i+1]\)时,先砍\(a[i+1]\),反之亦然。 所以这个题转化成了:给定\(n-1\)个关系,分别表示\(n\)个值中相邻两个的大小关系,问满足这些
ABC282E Choose Two and Eat One 又一个图论的回顾——Kruskal最小(最大)生成树算法。 看到\(n\)的范围只有\(500\),应该没有什么特别的算法。那么我们考虑建一个*\(n\)个顶点的完全图,节点\(x\)到节点\(y\)的边权值就是\(x^y+y^x\)。然
CF33C Wonderful Randomized Sum 我们可以发现,如果两区间不交叉也不会影响到结果,所以我们只需要考虑不交叉的情况即可。 我们所选择的前缀\(1\sim i\)应满足区间和最小,后缀也一样。所以用两个数组\(lr,rl\)分别记录下\(1\sim i\)(前缀)最小和、\(
CF457A Golden System 十分精妙的一道题,斐波那契数列和黄金比例\(\Phi\)的内在有着奇妙的联系。 我们设\(x=\frac{\sqrt{5}+1}{2}\),则根据题目给出的规律,有\(x^2=x+1\)。 下面我们通过列举,试图找出规律: \(x^0=1\) \(x^1=x
Atcoder Educational DP Contest \(\textbf{A. Frog 1}\) 对于一块石头\(i(3 \le i \le N)\),\(i-1\)和\(i-2\)均能到达。 用\(f[i]\)表示跳到第\(i\)个石头用的最小体力消耗: \[f[i]=min(abs(h
好久不写图论题了,Dijkstra都花了好长时间捡起来……之前也没有接触过反图的概念。这个题算是我重拾图论知识以来的第一题了。__φ(..) P1629 邮递员送信 Dijkstra是单源最短路的算法。但这个题除了要求节点\(1\)到其他节点的距离,还要知道其他节点回到节点\(1\)的距离。如果我们