zoukankan      html  css  js  c++  java
  • 洛谷 P3413 【萌数】

    敲完这篇题解,我就,我就,我就,嗯,好,就这样吧。。。

    思路分析:

    首先我们要知道一个回文串的性质——假如说一个[l-1,r+1]的串是回文的,那么[l,r]一定也是回文的。

    所以我们只要记录前一个数和前前一个数就可以了,假如说当前数和他们(前一个数和前前一个数)当中的任意一个相等,那么它就一定是一个萌数。

    知道了这些我们就可以开始设计状态了。

    dp[pos][pre1][pre2]表示当前找到pos位,前一个数为pre1,前前一个数为pre2时的萌数个数。

    代码实现:

    var
        a:array[1..2000] of Integer;
        dp:array[1..2000,0..9,0..9,0..1] of Int64;
        len,i:Longint;
        ans,oo,t:int64;
        l,r,st:ansistring;
    function dfs(pos,pre1,pre2,lead,flag,val:Longint):int64;
    var
        i,limit,x:Integer;
        res:int64;
    begin
        if pos>len then exit(val);
        if (pre2>=0)and(lead+flag=0)and(dp[pos][pre1][pre2][val]<>-1) then dfs:=(dp[pos][pre1][pre2][val]) else
        begin
        if flag=1 then limit:=a[pos] else limit:=9;
        res:=0;
        for i:=0 to limit do
        begin
            if lead=1 then x:=-1 else x:=pre1;
            res:=(res+dfs(pos+1,i,x,ord((lead=1)and(i=0)),ord((flag=1)and(i=limit)),ord((val=1)or((i=pre1)and(lead=0))or((i=pre2)and(lead=0)))))mod oo;
        end;
        if (pre2>=0)and(lead+flag=0) then dp[pos][pre1][pre2][val]:=res;
        dfs:=res;
        end;
    end;
    begin
        oo:=1000000007;
        readln(st);
        t:=pos(' ',st);
        l:=copy(st,1,t-1);
        len:=length(l);
        delete(st,1,t);
        for i:=1 to len do
            a[i]:=ord(l[i])-48;
        while i>0 do
            if a[i]>0 then begin dec(a[i]); break; end
            else begin a[i]:=9; dec(i); end;
        fillchar(dp,sizeof(dp),255);
        ans:=dfs(1,-1,-1,1,1,0);
        r:=st;
        len:=length(r);
        for i:=1 to len do
            a[i]:=ord(r[i])-48;
        ans:=((dfs(1,-1,-1,1,1,0)-ans)mod oo+oo)mod oo;
        writeln(ans);
    end.
  • 相关阅读:
    正则表达式 常见的简写形式
    Git 常用命令
    利用npm安装删除模块
    发送验证码设置settime(验证码倒计时)
    30分钟后过期(订单过期)
    JS 获取当前日期时间以及其他操作
    判断终端
    一个轻量、可拓展、针对手机网页的前端开发者调试面板vConsole
    数据结构与算法----树(中)
    数据结构与算法----树(上)
  • 原文地址:https://www.cnblogs.com/WR-Eternity/p/9931472.html
Copyright © 2011-2022 走看看