纪中2016.10.6比赛不明总结

100<=分数<=310

————————————————————————————————————
期望值: |T1:100/T2:10/T3:100/T4:100
————————————————————————————————————
实际: |T1:100/T2:10/T3:100/T4:0(what the fuck?????????????)
————————————————————————————————————
讲题前:T1:100/T2:100/T3:100/T4:20(少加了个大于号,呵呵呵呵呵呵呵呵呵呵呵呵了。)
————————————————————————————————————
讲题后:AK
————————————————————————————————————

废话不多说,开始讲题。

(xc说,要像讲故事一样)

T1:呵呵,比较水吧,95.5percent的人做对了。
题解分界线——————————————————
此题一开始设一个-2到100的数组,然后初始化:f[0]:=1。
f表示跳到第i个阶梯,有多少总方案。
于是就从裤兜里拿出神器——动态规划。因为跳到第i层可以从i-1层、i-2层、i-3层跳过来,所以dp方程式就是:f[i]:=f[i]+f[i-1]+f[i-2]+f[i-3]。再判断一下第i层可不可行,会不会掉下去就可以了,如果会掉下去,就把第i层改成0种方案,输出f[n]。

T2:描述其实要很细致地读题,才会明白小细节。(各种坑)
细节1:此题不想八皇后一样,八个方向,此题只有4个方向。
细节2:此题有许许多多的坑坑洼洼不可以放不明石像,于是就要额外判断。
细节3:心胸狭窄的石像们无法容忍自己位置下方x格的右侧y格有其他的石像,于是还是要额外地判断。
不怕时间超限的方法:很多人想到一个双重循环来枚举每一个格子,当然:时间超限(…)你不需要双重,只需要用一个for来枚举每个格子的纵列可不可以放,然后每次递归一个第几行就OK了。
接下来就是加上不怕超限的方法,按照题目细节描述来模拟,a。

T3:规律题。
我们发现,输出的行数是(n-1)*2行。
于是我们来分成两个部分来探讨规律——
第一个部分就是第1行到第(n-1)*2-4行。
用样例数据来看:
XXXXXXOOOOOO__
XXXXX__OOOOOXO
XXXXXOOOOO__XO
XXXX__OOOOXOXO
XXXXOOOO__XOXO
XXX__OOOXOXOXO
这是前6行。第一行的X个数为6紧跟着6个O,然后是空格。
第二行就是把第6个X换到空格位置1里:XXXXX()OOOOOO(X)
把第1个O换到空格位置2里:XXXXX_(_)OOOOOX(O)
神奇的发生了:(复制别怪我)
第三行的X个数为5紧跟着5个O,然后是空格,加上1个“XO”。
第四行就是把第5个X换到空格位置1里:XXXX(_)OOOOO(X)_XO
把第1个O换到空格位置2里:XXXX_(_)OOOOX(O)XO
……
到了第二个阶段,就是:
XXXOXOO__OXOXO
X__OXOOXXOXOXO
XOXOXO__XOXOXO
__XOXOXOXOXOXO
第一段XXX__OOOXOXOXO里的XXX(__)OO(OX)OXOXO互换。
第二段XXXOXOO__OXOXO里的X(XX)OXOO(__)OXOXO互换。
第三段X__OXOOXXOXOXO里的X(__)OXO(OX)XOXOXO互换。
第四段打表就对了。

T4使用吕乐大大的树形dp方法,时超80,打表研究之后AK**
正解:转大叔的题解别打我
先建立一个s数组,s[i,j]表示从第i个到第j个的和,求和时因为可能i+j-1会大于n,就是会回头,那就是一种特殊情况,自己想想就好了,然后f[i,j]表示第i个到第j个的最小能力和,最后答案就是min(f[i,n]),意思是对于每个i来说最小的f[i,n],且f[i,n]非零。

for i:=2 to n do
        begin
                for j:=1 to n do
                begin
                        for k:=1 to i-1 do
                        begin
                                r:=j+k;
                                if (j+k>n) then r:=(j+k) mod n; 
                                if (f[j,i]>f[j,k]+f[r,i-k]+s[j,i]) or (f[j,i]=0) then
                                        f[j,i]:=f[j,k]+f[r,i-k]+s[j,i];
                        end;
                end;
        end;

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKKKKKKKKKKKKKKKKKKKKKKKKKKK啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦

我活在这夜里。无论周围多么黑暗,我都要努力发光!我相信着,终有一天,我会在这深邃的夜里,造就一道最美的彩虹。
原文地址:https://www.cnblogs.com/RainbowCrown/p/11148474.html