This is my blog.
应该网络赛已结束就写点什么的,现在都忘记的差不多了。明明照旧没来,两人一队真的有点忙。庆幸的是比昨天的那场好太多了,这次AC了四题,我和博博都很兴奋。尤其最后一题,是结束之前交的。由于“随机大法”的存在,我们吃完饭后,才发现又AC一题了。我还兴奋的有两件事,一件就是原来还可以随机大法这么干啊!第二件则是,我居然做出了AC率低的题目,难道是因为都去随机了吗?总之很开心呢!补题补题!
(未完待续)
A.
B.cable cable cable
这题其实仔细想想,so easy!代码也很短。看了一下博博现场的代码,居然一下子就发现了正解。
首先肯定要有k个分开连的,剩下的m-k
个是作为替补的。比如在k
个中没有选到某个,而选了剩下的那个,而因为没有选到的那个有k种不同的可能,所以需要和k个都连接,才能确保随便选都可以满足k个的存在。
来看神奇的代码吧!
C.
D.card card card
找最长上升和下降子序列。博博提示dp,我想到了逆序对,顺利带偏方向。在最后几分钟,博博说这不是LIS问题吗?晕。终于过。博博加了线段树优化,但我看不懂。就先存着吧。
AC代码
|
|
E.number number number
思路一 (找规律)
在斐波那契数列中任取k个数字,找到一个最小的不能由这k个数字之和表示的n
现场中,我神奇地再次找到了规律,估计运气好吧!照样是手残,博博将其变为矩阵,用了矩阵快速幂的模版,写了代码,AC了!博博的代码写的很好看,很优美。
规律如下:
1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|
1*3-0+1 | 4*3-1+1 | 12*3-4+1 | 33*3-12+1 | 88*3-33+1 |
即\(f(k)=f(k-1)*3-f(k-2)+1\)
然后转换成矩阵
现场代码
|
|
思路二 (严谨思路)
思路二,还是来自那个dalao的博客
读完之后,觉得很有道理,真的是很扎实。
一个数如果不能被\(k\)个Fibonacci 数之和表示,那么它至少要用\(k+1\)个不同的 Fibonacci 数表示,考虑唯一分解的 Fibonacci 进制,进制下相邻位不能同时为1,能包含\(k+1\)个1的数字至少有\(2k+1\)位,这个数字加一后会变成一个长度为\(2k+2\)的数字,所以它的值是\(Fib_{2k+3}-1\)。
转换为矩阵:
\(\left( \begin{array}{ccc}Fib_k & Fib_{k-1} \end{array} \right)\)
=\(\left( \begin{array}{ccc}Fib_{k-1} & Fib_{k-2} \end{array} \right)*\\\left( \begin{array}{ccc}1 & 1 \\ 1 & 0 \end{array} \right)\)
AC代码
|
|
F.
G.
H.transaction transaction transaction
当时居然把把自己绕晕了,走还是不走,这是个问题啊!本来想用图做的,后来发现万一是个环怎么办?压根儿没有想到可以dp呢!对于要经过这个地方,可以看作,卖掉之前的书,再买一次书。这样只要纠结买不买就可以。然后呢,这里的路是无向图,所以需要二维数组。代码还是简单的。但我居然在看了dp后,不想dp。应该每一题都想想dp的呀!
I.
J.
K.
L.card card card
不知道为什么这题没什么人做啊!题目中的“MJF also guarantees that the sum of all “penalty value” is exactly equal to the number of all cards.“是关键,所以直接暴力,找到第一个sum不小于0的就可以了。
后记
转载请注明出处,谢谢。
愿 我是你的小太阳