Loading

P4920 未来程序

upd:管理员不负责任!我这格式都挂了怎么还能过的(

由于 \(\tt{F}\color{red}\tt{orever\_Pursuit}\) 一直想让我写这题于是我就写了。

备注:#9#10 有参照题解。

每个子任务难度评价对照如下:

  • EZ:大众分,应该非常简单。
  • NM:差不多是大众分,比较简单。
  • HD:较难,可能比较难做。
  • SP:愚人节题目,不考察选手OI实力。

Program 1(EZ)

龟速乘,直接用 __int128 就搞定了。

Program 2(NM)

一个奇怪的循环,列出前几项可以发现一个规律。

\(n\) 次循环后,\(A=F(n)^2,B=F(n-1)F(n),C=F(n-1)^2\)

其中 \(F(n)\) 代表斐波那契数列,直接矩阵快速幂一波带走。

Program 3(EZ)

小学奥数题。

\[\sum\limits_{i=0}^n1=n+1 \]

\[\sum_{i=0}^ni=\frac{n\times(n+1)}{2} \]

\[\sum_{i=0}^ni^2=\frac{n\times(n+1)\times(2n+1)}{6} \]

\[\sum\limits_{i=0}^ni^3=(\sum_{i=0}^n i)^2 \]

\[\sum\limits_{i=0}^ni^4=(\sum\limits_{i=0}^ni^2)\frac{(3n^2+3n+1)}{5} \]

但是这里要注意分母的常数请直接放到分子的其中一个因数里,不然溢出后除的结果是不对的。

\(\uparrow\) 为什么不用 __int128 呢?因为 __int128 也爆炸了!

Program 9(SP)

\(\text{Q1}\)\(1984\),不会的请重温笔试/初赛。

\(\text{Q2}\)\(123456\),没什么好说的。

\(\text{Q3}\)\(\tt{chenlijie}\),摘掉眼镜或者看 vs code 的预览那边。

\(\text{Q4}\):暴力枚举所有符号即可。

\(\text{Q5}\)\(\text{Q8}\):注意到 Program \(2\) 中有一份英语词典,我们可以一个一个代入尝试。

\(\text{Q9}\):注意到字符串长度不超过 \(7\),所以依旧选择暴力选择字典的两个单词去尝试,这里需要先筛掉长度超过 \(5\) 的字符,然后就跑的飞快了。

\(\text{Q10}\):注意到 Program \(10\) 中已经有这个句子了,我们可以在一个函数中直接得到答案。你也可以直接百度。

Program 7(HD)

观察样例发现是完成 \(16\times16\) 的数独,由于我是贺题怪所以我随便贺了一份代码,跑出来了,很快啊!

正解是舞蹈链,你可以在 SPOJ 的那个数独题里找到这个题的题解。

Program 10(SP)

一开始的思路是直接转化函数,化递归为递推。

然后我把单个字母的函数推了一遍,其余保留原样,结果编译异常慢。

然后本来只跑一个数据点的,结果答案就全出来了,很快啊!

后来发现 \(\text{O(fast)}\) 直接帮你推完了,不讲武德!

Program 4(NM)

  • Task \(1\):两个都是 \(1\) 且不相同的格子,对答案贡献为 \(1\),求答案。
  • Solution:设为 \(1\) 的格子数量为 \(x\),答案就是 \(x(x-1)\)
  • Task \(2\):一个为 \(1\) 的格子对答案贡献为所有 \(0\) 和它的曼哈顿距离最小值,求答案。
  • Solution:显然这个格子一定在左上,右上,左下,右下四个方向里,可以直接 dp。

Program 5(NM)

统计全为 \(1\) 的子矩形数量。

这个也是经典题目,统计以每一行为最后一行的和法矩形数量,使用单调栈计算答案即可。

Program 6(NM)

学过 pollard-rho 的同学都知道这个东西最后会进入一个环,并且期望进入这个环的时间并不长

众所周知判环可以用 floyd 或者 brent,brent 快一点,floyd 慢一点,取决于你想用哪个。本机成功使用 floyd 判圈算法在 \(1\) 分钟左右的时间内得出答案.

Program 8(HD)

我们大胆猜测答案是几个组合形式的数,那么答案一定是一个关于 \(n\) 的多项式,于是大力插值。

注意 \(10^{15}\) 要对模数取模,不然插值的时候会爆 long long

posted @ 2021-01-11 17:03  dXqwq  阅读(145)  评论(1编辑  收藏  举报