这是一道比较难的数位dp

因为逐位统计好像无法处理数位和整除原数的

但是有了刚才的bzoj1072的经验,我们能做的是逐位处理被一个数d整除的方案

不难想到先穷举数位和now,now最大也就162,可以承受

然后在统计数位和为now且能整除原数的方案

我们用f[less,i,j,k]表示第i位是否必须小于n的第i位,还有i位没处理,当前数位和为j,处理过的数位mod now余数为k的方案

然后记忆化搜索就可以了(转移见程序)

 var f:array[..,..,..,..] of int64;
    a:array[..] of longint;
    len,t,now,i:longint;
    l,r,ans:int64; function max(a,b:longint):longint;
  begin
    if a>b then exit(a) else exit(b);
  end; function calc(p,i,j,k:longint):int64;
  var w,ch,s,t:longint;
      sum:int64;
  begin
    sum:=;
    if i= then
      if (j=) and (k=) then exit()
      else exit();
    if f[p,i,j,k]<>- then exit(f[p,i,j,k]); //记忆化
    s:=max(,j-*(i-));
    if p= then t:=a[i] else t:=;
    for w:=s to t do //穷举这位的数
    begin
      if (p=) and (w=a[i]) then ch:=
      else ch:=;
      sum:=sum+calc(ch,i-,j-w,((k* mod now)+w) mod now); 转移
    end;
    f[p,i,j,k]:=sum;
    exit(sum);
  end; procedure work(x:int64);
  begin
    t:=;
    while x<> do
    begin
      inc(t);
      a[t]:=x mod ;
      x:=x div ;
    end;
  end; function count(p:int64):int64;
  begin
    work(p);
    fillchar(f,sizeof(f),);
    exit(calc(,t,now,));
  end; begin
  readln(l,r);
  len:=trunc(ln(r)/ln())+;
  for now:= to do
  begin
    if now>len* then break;  //小优化
    ans:=ans+count(r)-count(l-);
  end;
  writeln(ans);
end.

bzoj1799的更多相关文章

  1. 【BZOJ1799】[AHOI2009]同类分布(动态规划)

    [BZOJ1799][AHOI2009]同类分布(动态规划) 题面 BZOJ 洛谷 题解 很容易想到数位\(dp\),然而数字和整除原数似乎不好记录.没关系,直接枚举数字和就好了,这样子就可以把整除原 ...

  2. [BZOJ1799][AHOI2009]同类分布(数位DP)

    1799: [Ahoi2009]self 同类分布 Time Limit: 50 Sec  Memory Limit: 64 MBSubmit: 1635  Solved: 728[Submit][S ...

  3. bzoj1799: [Ahoi2009]self 同类分布

    数位dp 先从1到162枚举各位数之和 s[i][j][k][l]表示i位数,第一位小于等于j,当前各位数字和为k,当前取模余数为l的方案数 然后脑补一下转移就行了 详见代码 #include < ...

  4. BZOJ1799 self 同类分布 数位dp

    BZOJ1799self 同类分布 去博客园看该题解 题意 给出a,b,求出[a,b]中各位数字之和能整除原数的数的个数. [约束条件]1 ≤ a ≤ b ≤ 10^18 题解 1.所有的位数之和&l ...

  5. bzoj1799(洛谷4127)同类分布(月之谜)

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1799 https://www.luogu.org/problemnew/show/P4127 ...

  6. bzoj 3209 bzoj1799 数位dp

    3209: 花神的数论题 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 2267  Solved: 1040[Submit][Status][Disc ...

  7. [BZOJ1799][Ahoi2009]self 同类分布(数位dp)

    题目描述 给出两个数 a,ba,b ,求出 [a,b][a,b] 中各位数字之和能整除原数的数的个数. 输入输出格式 输入格式: 一行,两个整数 aa 和 bb 输出格式: 一个整数,表示答案 输入输 ...

  8. BZOJ1799 [Ahoi2009]self 同类分布[数位DP]

    求出[a,b]中各位数字之和能整除原数的数的个数. 有困难的一道题.被迫看了题解:枚举每一个各位数字的和($<=162$),设计状态$f[len][sum][rest]$表示dp后面$len$位 ...

  9. bzoj1799同类分布——数位DP

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1799 数位DP. 1.循环方法 预处理出每个位数上,和为某个数,模某个数余某个数的所有情况: ...

随机推荐

  1. Highcharts在IE中不能一次性正常显示的一种解决办法

    由于客户要求必须在IE浏览器下兼容图表,故选用了兼容性较好的Highcharts.另外说一句,博主尝试过ichartjs.ECharts.YUI,兼容性都没有Highcharts给力(所有的兼容性问题 ...

  2. SQLServer2012分离出的数据库存放路径

    分离出的数据库没有保存位置提示,经常会导致分离出的数据库找不到  以下是分离出的数据库默认位置: C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQL ...

  3. UIWebView和UIActivityIndicatorView的结合使用

    环境:Xcode6.1 UIWebView是iOS开发中常用的一个控件,是内置的浏览器控件,我们可以用它来浏览网页,加载文档等.这篇文件将结合UIActivityIndicatorView控件制作一个 ...

  4. React-Native牛刀小试仿京东砍啊砍砍到你手软

    React-Native牛刀小试仿京东砍啊砍砍到你手软 React-Native基础教程 *React-Native基础篇作者git *React-Native官方文档 *Demo 几个月前faceb ...

  5. 解决IE浏览器IFrame对象内存不释放问题

    最近项目组发现在使用showModalDialog弹出窗体中如果包含IFrame对象,则IFrame对象占用的内存资源在窗体关闭后不会释放.弹出关闭反复多次后,IE浏览器内存占用可超过数百M,严重时I ...

  6. SGU 280.Trade centers(贪心)

    SGU 280.Trade centers 解题报告 题意: n(<=30000)个城市,(n-1)条道路,求最少需要选择多少个城市建造市场,使得所有城市到任意一个市场的距离不大于k. Solu ...

  7. php类的方法

    方法就是在类中的function,很多时候我们分不清方法与函数有什么差别,在面向过程的程序设计中function叫做函数,在面向对象中function则被称之为方法. 同属性一样,类的方法也具有pub ...

  8. 通过表名显示数据库中该表的表头和内容(mysql扩展库操作)

    编写一个函数,接收一个表名,然后把表的表头和内容显示在网页 <?php function readTab($tableName){ $conn=mysql_connect("local ...

  9. python开发-web框架之diango-----Models

    这篇博客是紧连上一篇博客的,因为内容较多,这里介绍的是Models这一部分的内容 七:Models 数据库的配置 1    django默认支持sqlite,mysql, oracle,postgre ...

  10. 最新县及县以上行政区划代码JSON数据(截止2015年9月30日)含经纬度数据

    数据来源(国家统计局):http://www.stats.gov.cn/tjsj/tjbz/xzqhdm/ 对数据进行的特殊处理: 将直辖市中的 “市辖区” 与 “县” 合并到区域 将 “省直辖县级行 ...