$BZOJ1799\ Luogu4127$ 月之谜 数位统计$DP$
Sol
看了很久也没有完全理解直接$DP$的做法,然后发现了记搜的做法,觉得好棒!
这里是超棒的数位$DP$的记搜做法总结 看完仿佛就觉得自己入门了,但是就像文中写的,还是要多做题才能真正弄明白鸭,还要加油(ง •_•)ง
然后这里是同一个人的本题题解
Code
#include<iostream>
#include<cstdio>
#include<cstring>
#define il inline
#define Rg register
#define go(i,a,b) for(i=a;i<=b;i++)
#define yes(i,a,b) for(i=a;i>=b;i++)
#define ll long long
#define mem(a,b) memset(a,-1,sizeof(a));
using namespace std;
il ll read()
{
ll x=,y=;char c=getchar();
while(c<''||c>''){if(c=='-')y=-;c=getchar();}
while(c>=''&&c<=''){x=(x<<)+(x<<)+c-'';c=getchar();}
return x*y;
}
int len,a[];
ll l,r,mod,f[][][];
il ll dfs(int pos,int sum,int ys,int limit)
{
if(pos>len)return (ys== && sum==mod);
if(!limit && f[pos][sum][ys]!=-)return f[pos][sum][ys];
ll as=;int maxs=limit?a[len-pos+]:,i;
go(i,,maxs)as+=dfs(pos+,sum+i,(1LL*ys*+i)%mod,i==maxs&&limit);
if(!limit)f[pos][sum][ys]=as;return as;
}
il ll sol(ll x)
{
len=;
while(x)a[++len]=x%,x/=;
ll as=;
go(mod,,*len){mem(f,);as+=dfs(,,,);}
return as;
}
int main()
{
l=read(),r=read();
printf("%lld\n",sol(r)-sol(l-));
return ;
}
随机推荐
- mysql把一个表的字段update成另一个表的字段根据id
mysql把一个表的字段update成另一个表的字段根据id 1.填充activity表里面的creator字段,用org的founderid,其中activity的orgid要和org的id对应,具 ...
- Spring读取配置文件,地址问题,绝对路径,相对路径
Spring在读取配置文件时,是相对于bin,或者WEB-INF的: “applicationContext.xml”就是找bin或WEB-INF及子文件夹下的文件: “/res/applicatio ...
- 测试代码的执行时间魔法方法%time和%timeit
对于规模更大.运行时间更长的数据分析应用程序,你可能会希望测试一下各个部分或函数调用或语句的执行时间.你可能会希望了解某个复杂计算过程中到底是哪些函数占用的时间最多.幸运的是,在开发和测试代码的过程中 ...
- Mule自带例子之loanbroker-simple
1 配置效果图 2 配置文件 <?xml version="1.0" encoding="UTF-8"?> <mule xmlns:cxf=& ...
- java面向接口编程之制定标准和简单工厂模式
制定一个标准,让别人去实现或者说满足它! Eg: interface USB{//定义USB标准 void useUSB();//USB有使用USB的行为 } 简单工厂模式 构建一个工厂出来,在里面进 ...
- [转]如何让多个不同类型的后端网站用一个nginx进行反向代理实际场景分析
前段时间公司根据要求需要将聚石塔上服务器从杭州整体迁移到张家口,刚好趁这次机会将这些乱七八糟的服务器做一次梳理和整合,断断续续一个月迁移完 成大概优化掉了1/3的机器,完成之后遇到了一些问题,比如曾今 ...
- SQL2008 R2安装完成后开启services服务指引和 sa账号启用、数据类型
- 如何安装Anaconda和Python
1.下载安装文件 https://www.anaconda.com/download/ 2.百度安装方法:https://jingyan.baidu.com/article/3f16e0031e875 ...
- python模块之包
包:将解决一类问题的模块放在同一目录下就形成了一个包 为了更好的了解包,我们就模拟创建一个包 import os os.makedirs('glance/api') os.makedirs('glan ...
- linux Tasklets 机制
tasklet 类似内核定时器在某些方面. 它们一直在中断时间运行, 它们一直运行在调度它 们的同一个 CPU 上, 并且它们接收一个 unsigned long 参数. 不象内核定时器, 但是, 你 ...