2018上海大都会邀请赛J(数位DP)
using namespace std;
int num[20];//按位储存数字
int mod;
long long dp[20][110][110];//位数,位数和,位数和对mod取模的余数
//数字的位数,前面位数和,对于mod的余数
{
if(pos==-1)//从最大位向最小位dfs,个位以下在初始化时变成了-1,代表搜索完成
return (he==mod&&yushu==0);//表示这个数合法,即满足搜索要求
else if(dp[pos][he][yushu]!=-1&&limit==0)//在没有限制的条件记忆化,这里与下面记录状态是对应
return dp[pos][he][yushu];
int up=limit?num[pos]:9;//判断有无数字上界的限制
long long summ=0;
for(int i=0;i<=up;i++)//枚举将不同情况的个数增加到summ中
{
if(i+he<=mod)
summ+=dfs(pos-1,i+he,(i+yushu*10)%mod,limit&&i==num[pos]);//数位DP的灵活所在,此时将位数向下移动一位,数字和增加i,前面的余数*10+现在的余数对mod取模
//最后的limit和i的传递仍待理解
else
break;//如果位数和超过了mod,再向下搜索只会更大,剪枝
}
if(!limit)
{
dp[pos][he][yushu]=summ;//这里对应上面的记忆化,在一定条件下时记录,保证一致性
}
return summ;
}
{
int cnt=0;
while(x)
{
num[cnt++]=x%10;
x/=10;
}
long long sum=0;
for(int i=1;i<=cnt*9;i++)
{
mod=i;
memset(dp,-1,sizeof(dp));//实时将取模清空
sum+=dfs(cnt-1,0,0,1);//cnt比实际位数多1
}
return sum;
}
{
int t;
scanf("%d",&t);
for(int tt=1;tt<=t;tt++)
{
long long n;
scanf("%lld",&n);
printf("Case %d: %lld\n",tt,solve(n));
}
return 0;
}
//数位DP难在DP,数位的模板仍存在疑问
typedef long long ll;
2018上海大都会邀请赛J(数位DP)的更多相关文章
- The 2018 ACM-ICPC上海大都会赛 J Beautiful Numbers (数位DP)
题意:求小于等于N且能被自己所有位上数之和整除的数的个数. 分析:裸的数位dp.用一个三位数组dp[i][j][k]记录:第i位,之前数位之和为j,对某个mod余数为k的状态下满足条件的个数.这里mo ...
- 【数位dp】Beautiful Numbers @2018acm上海大都会赛J
目录 Beautiful Numbers PROBLEM 题目描述 输入描述: 输出描述: 输入 输出 MEANING SOLUTION CODE Beautiful Numbers PROBLEM ...
- 2018上海大都会 J-Beautiful Numbers(数位dp-模未知)
J-Beautiful Numbers 链接:https://www.nowcoder.com/acm/contest/163/J 来源:牛客网 时间限制:C/C++ 8秒,其他语言16秒 空间限制: ...
- re:从零开始的数位dp
起源:唔,,前几天打cf,edu50那场被C题虐了,决定学学数位dp.(此文持续更新至9.19) ps:我也什么都不会遇到一些胡话大家不要喷我啊... 数位dp问题:就是求在区间l到r上满足规定条件的 ...
- 2018 ACM 国际大学生程序设计竞赛上海大都会赛重现赛 J Beautiful Numbers (数位DP)
2018 ACM 国际大学生程序设计竞赛上海大都会赛重现赛 J Beautiful Numbers (数位DP) 链接:https://ac.nowcoder.com/acm/contest/163/ ...
- 2018 ACM 国际大学生程序设计竞赛上海大都会赛重现赛 J Beautiful Numbers (数位dp)
题目链接:https://ac.nowcoder.com/acm/contest/163/J 题目大意:给定一个数N,求区间[1,N]中满足可以整除它各个数位之和的数的个数.(1 ≤ N ≤ 1012 ...
- 2018 ACM 国际大学生程序设计竞赛上海大都会部分题解
题目链接 2018 ACM 国际大学生程序设计竞赛上海大都会 下午午休起床被同学叫去打比赛233 然后已经过了2.5h了 先挑过得多的做了 .... A题 rand x*n 次点,每次judge一个点 ...
- 2018 ACM 国际大学生程序设计竞赛上海大都会赛
传送门:2018 ACM 国际大学生程序设计竞赛上海大都会赛 2018 ACM 国际大学生程序设计竞赛上海大都会赛重现赛2018-08-05 12:00:00 至 2018-08-05 17:00:0 ...
- 2018 ACM 国际大学生程序设计竞赛上海大都会赛重现赛 F Color it
链接:https://www.nowcoder.com/acm/contest/163/F 来源:牛客网 2018 ACM 国际大学生程序设计竞赛上海大都会赛重现赛 F Color it 时间限制:C ...
随机推荐
- C# WinForm开发DataGridView 使用
1.C# WinForm开发系列 - DataGridView 使用:(http://group.cnblogs.com/topic/40730.html) 2.C# — WinForm DataGr ...
- 关于React前端构建的一般过程 - 理论篇
概要 本文以个人阅读实践经验归纳前端架构构建过程,以Step by Step方式说明创建一个前端项目的过程.并会对每个阶段所使用的技术进行可替代分析,如Express替换Hapi或者Koa的优缺点分析 ...
- Git_学习_05_ 解决冲突
二.参考资料 1.使用git pull文件时和本地文件冲突怎么办? 2.git 冲突解决
- test20190611 NOIP模拟赛
题一:答题比赛 [问题描述] YYH报名参加了一个特殊的电视问答节目.这个节目共有n个问题,每回答正确1题,YYH就会获得1分,而每当YYH连续答对k题,那么他的现有得分乘以2,注意答对第k题后,是先 ...
- 洛谷 P1187 3D模型
题目描述 一座城市建立在规则的n×m网格上,并且网格均由1×1正方形构成.在每个网格上都可以有一个建筑,建筑由若干个1×1×1的立方体搭建而成(也就是所有建筑的底部都在同一平面上的).几个典型的城市模 ...
- [转]CSS遮罩——如何在CSS中使用遮罩
特别声明:此篇文章由D姐根据Christian Schaefer的英文文章原名<CSS Masks – How To Use Masking In CSS Now>进行翻译,整个译文带有我 ...
- Guice总结
Guice总结 Jar包:guice-4.1.0.jar 辅包: guava-15.0.jar aopalliance-.jar javaee-api-6.0-RC2.jar Guice的IoC 两种 ...
- java多线程编程核心技术——第一章总结
目录: 1.1进程.多线程的概念,及线程的优点 1.2多线程的使用 1.3currentThread()方法 1.4isAlive()方法 1.5sleep()方法 1.6getId()方法 1.7停 ...
- 几个最短路径算法Floyd、Dijkstra、Bellman-Ford、SPFA的比较
几大最短路径算法比较 转自:http://blog.csdn.net/v_july_v/article/details/6181485 几个最短路径算法的比较: Floyd 求多 ...
- for循环中的条件执行循序
问题: public class Main { public static void main(String[] args) { int i,n,length = 0; for(i=1;length& ...