zoukankan      html  css  js  c++  java
  • NOIP模拟9

    #rank3,开心

    话说这次考试时,心态并不是很好,考试前一天看了DeepinC大佬的博客,上次他rank15就

    感觉炸成那样,那我上次rank30算什么?反正内心虚得一比;昨天晚上做梦梦到自己模拟赛倒数,

    起床后很慌,早上到了之后没心情打题,颓了一会博客,早上饭也没好好吃,知道这次达哥出题;

    回来后感觉只能打暴力,考前一直在颓博客,学卡常,忽然发现已经开考2min了,旁边cbx已经在

    看题了,我急忙打开题,先扫一遍,果然是达哥的题,连暴力都不会打。。。卡常白学了。。。

    按顺序来,T1先骗到20分,然后就整不动了,看T2,t==0时想到以前做的概率充电器,t==1时

    就只想到了高斯消元。打上去以为能得60分,结果t==0时式子推错,只拿到了消元的30。

    看T3时还剩1.5h,发现第二种情况是一个裸的卡特兰数,第一种情况是一个裸的组合数,然后

    开始想第3,4种情况,上个厕所,回来后想到了第4种情况的实现方法,然后想第3种,发现只剩

    了半个多小时,n<=1000,觉得可能要是个n2的dp,但是打表肯定能过,纠结了一下选择了dp

    然后开始推式子

     1 void work()
     2 {
     3     int ans=0;
     4     f[2]=4;
     5     for(int i=4;i<=n;i+=2)
     6     {
     7         f[i]=4ll*cat(i>>1)%mod;
     8         for(int j=i-2;j;j-=2)
     9         {
    10             f[i]+=3ll*f[j]%mod*cat((i-j)>>1)%mod;
    11             f[i]=f[i]>=mod?f[i]-mod:f[i];
    12         }
    13     }
    14     printf("%d
    ",(f[n]+mod)%mod);
    15 }
    式子::::::::

    发现:因为只能在坐标轴上移动,分为上下左右四个轴,我们只考虑最后一个轴:若始终不改变轴,则就是一个裸的卡特兰,

    所以初始化为Cat(n/2)*4,之后从前面转移时要考虑重复的情况,要保证最后一个轴和倒数第二个轴不重复,所以乘的时候不

    能乘4,而要乘3,枚举最后一个轴的步数,加起来即可;

    想到后赶紧打上去,A掉T3,开心

  • 相关阅读:
    1082 射击比赛 (20 分)
    1091 N-自守数 (15 分)
    1064 朋友数 (20 分)
    1031 查验身份证 (15 分)
    1028 人口普查 (20 分)
    1059 C语言竞赛 (20 分)
    1083 是否存在相等的差 (20 分)
    1077 互评成绩计算 (20 分)
    792. 高精度减法
    791. 高精度加法
  • 原文地址:https://www.cnblogs.com/loadingkkk/p/11256882.html
Copyright © 2011-2022 走看看