zoukankan      html  css  js  c++  java
  • 纪中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啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦

    我活在这夜里。无论周围多么黑暗,我都要努力发光!我相信着,终有一天,我会在这深邃的夜里,造就一道最美的彩虹。
  • 相关阅读:
    Json处理函数json_encode json_decode
    会员注册审核状态更新计算
    $_GLOBALS超全局数组和global定义的全局变量区别?
    $_CFG = load_config(); /* 载入系统参数 */
    window.clearInterval与window.setInterval的用法 定时器的设置
    php中文件引入require
    修改本地数据库root权限密码
    JQuery执行函数与window.onload函数
    Android 启动白屏或者黑屏闪现解决
    Android状态栏微技巧,带你真正意义上的沉浸式
  • 原文地址:https://www.cnblogs.com/RainbowCrown/p/11148474.html
Copyright © 2011-2022 走看看