洛谷P3107题面

相对较为模板化的代码 f[i][j][bo1][bo2]记录到第i位,数字num出现了x次(j初始为20,若当前数字不为num,j++;否则j--;最后只要记录j<=20的总和)bo1和bo2就很简单了,上界和前导零

#include <cstdio>
#include <string>
#include <cstring>
#include <iostream>
using namespace std;
#define int long long
string l,r;
int f[][][][],kkk[];
inline int DP(int le,int num1,int num2)
{
int re=,i,bo1,bo2,j,k,bo,pp; memset(f,,sizeof f); f[][][][]=;
//bo1:上界 bo2:前导零
for(i=;i<le;i++)
{
for(j=;j<=;j++)
{
for(bo1=;bo1<;bo1++)
{
for(bo2=;bo2<;bo2++)
{
if(f[i][j][bo1][bo2]==)continue;
for(k=;k<=;k++)
{
if((num2!=-&&(k!=||!bo2)&&k!=num1&&k!=num2)||(bo1&&k>kkk[i]))continue; pp=j;
if(!bo2||k!=)
{
if(num2==-)
{
if(k==num1)pp--;else pp++;
}
else
{
if(k==num1)pp--;else if(k==num2)pp++;
}
}f[i+][pp][bo1&(k==kkk[i])][bo2&(k==)]+=f[i][j][bo1][bo2];
}
}
}
}
}
if(num2==-)
{
for(i=;i<=;i++)for(j=;j<;j++)re+=f[le][i][j][];
}else for(i=;i<;i++)re+=f[le][][i][];
return re;
}
inline int solve(string s)
{
int re=,i,j,le=s.size();
for(i=;i<le;i++) kkk[i]=s[i]-'';
for(i=;i<=;i++) re+=DP(le,i,-);
for(i=;i<;i++)
{
for(j=i+;j<=;j++)re-=DP(le,i,j);
}return re;
}
signed main()
{
int i; cin>>l>>r;
for(i=l.size()-;i>=;i--)
{
if(l[i]=='')l[i]='';else {l[i]--;break;}
}printf("%lld\n",solve(r)-solve(l));
}

luogu3107的更多相关文章

随机推荐

  1. nginx-1.13.12 源码配置清单

    configure命令支持以下参数: --help打印帮助信息. --prefix=安装路径定义一个将保留服务器文件的目录.这个相同的目录也将被用于由configure(由库源创建的路径除外)和ngi ...

  2. MySQL 基础三 函数(聚合、字符串、时间、条件判断)

    1.聚合 其它:GROUP_CONCAT.avg.sum.count.max.min SELECT typeid,GROUP_CONCAT(goodsname) FROM `goods` GROUP ...

  3. C. Report

    题意:给出n个无序的数以及m个操作,每个操作由两个数组成,第一个数是操作的方式,第二个数 i 是操作的范围,若第一个数是1,则给 1-i 个数按升序排序,若第二个数是2,则给 1-i 个数按降序排列. ...

  4. 滚动歌词制作 之 ncm格式转mp3

    导读 BesLyric 可以将 ncm格式转MP3 了! 前几天有网友到我的博客下评论说现在会员才能下载下来的音乐发现后缀是 ncm, 没法使用 Beslyric 来制作歌词,昨天升级了一下软件,将 ...

  5. 你想要的Python面试都在这里了【315+道题】

    写在前面 近日恰逢学生临近毕业,课程后期大家"期待+苦逼"的时刻莫过于每天早上内容回顾和面试题问答部分[临近毕业每天课前用40-60分钟对之前内容回顾.提问和补充,专挑班里不爱说话 ...

  6. Redis详解(六)------ RDB 持久化

     前面我们说过,Redis 相对于 Memcache 等其他的缓存产品,有一个比较明显的优势就是 Redis 不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,has ...

  7. NOI.ac #31 MST DP、哈希

    题目传送门:http://noi.ac/problem/31 一道思路好题考虑模拟$Kruskal$的加边方式,然后能够发现非最小生成树边只能在一个已经由边权更小的边连成的连通块中,而树边一定会让两个 ...

  8. odoo11 添加自定义模块报错问题

    在昨天解决了数据库管理页面布局混乱的问题之后,如何设置自己的custom_addons模块文件夹成了主要问题,建立自己的custom_addons文件夹,可以使用git命令来管理自己所写代码的版本了, ...

  9. 大话设计模式之模板模式 C#

    学无止境,精益求精 十年河东,十年河西,莫欺少年穷 今天一起探讨模板模式,如下: 一.概念 上一篇文章讲了大话设计模式:原型模式,原型模式主要是通过Clone()方法<深浅复制>,创建新的 ...

  10. [Spark][Python]DataFrame的左右连接例子

    [Spark][Python]DataFrame的左右连接例子 $ hdfs dfs -cat people.json {"name":"Alice",&quo ...