题意:

给你三个数字L, R, K,问在[L, R]范围内有多少个数字满足它每一位不同数字不超过k个,求出它们的和

思路:

明显的数位DP了,套路都一样,不过这道题是记权值而不是满足条件的数字个数,所以还需要再开一个计贡献数组

dp[len][x][sum]表示当前有len位数字还不确定,在此之前0~9每个数字出现的状态为x,已经有sum个不同数字的方案个数

#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<map>
#include<assert.h>
#include<string>
#include<math.h>
#include<queue>
#include<stack>
#include<iostream>
using namespace std;
#define LL long long
#define mod 998244353
int k, str[24];
typedef struct Res
{LL cnt;LL sum;
}Res;
Res temp, dp[24][1025][25];
LL ten[25] = {1};
Res Sech(int len, int now, int sum, int flag, int p)
{int u, i;LL ans, cnt;if(sum>k){temp.cnt = temp.sum = 0;return temp;}if(len==0){temp.sum = 0, temp.cnt = 1;return temp;}if(flag==0 && p==0 && dp[len][now][sum].cnt!=-1)return dp[len][now][sum];if(flag==1)  u = str[len];else  u = 9;ans = cnt = 0;for(i=0;i<=u;i++){if(now&(1<<i)){temp = Sech(len-1, now, sum, flag&&i==u, 0);cnt += temp.cnt;ans = (ans+temp.sum+temp.cnt%mod*i%mod*ten[len-1])%mod;}else{if(p==1 && i==0){temp = Sech(len-1, now, sum, flag&&i==u, 1);cnt += temp.cnt;ans = (ans+temp.sum)%mod;}else{temp = Sech(len-1, now^(1<<i), sum+1, flag&&i==u, 0);cnt += temp.cnt;ans = (ans+temp.sum+temp.cnt%mod*i%mod*ten[len-1])%mod;}}}temp.cnt = cnt;temp.sum = ans;if(flag==0 && p==0)dp[len][now][sum] = temp;return temp;
}
Res Jud(LL x)
{int len = 0;len = 0;while(x){str[++len] = x%10;x /= 10;}return Sech(len, 0, 0, 1, 1);
}
int main(void)
{LL l, r, i;for(i=1;i<=22;i++)ten[i] = ten[i-1]*10%mod;memset(dp, -1, sizeof(dp));scanf("%lld%lld%d", &l, &r, &k);printf("%lld\n", (Jud(r).sum-Jud(l-1).sum+mod)%mod);return 0;
}
/*
125
0 236927938 0
*/

Educational Codeforces Round 53: E. Segment Sum(数位DP)相关推荐

  1. Educational Codeforces Round 8 D. Magic Numbers 数位DP

    D. Magic Numbers 题目连接: http://www.codeforces.com/contest/628/problem/D Description Consider the deci ...

  2. 数位dp:Educational Codeforces Round 53 (Rated for Div. 2) E. Segment Sum

    给出上下界,让你求出其中满足条件:不同的数字的数量不超过k个的数字的总和,答案模998244353,比如123里不同的数字个数为3,113里不同的数字个数为2,111里不同的数字个数为1. 跟普通的数 ...

  3. C. Robot in a Hallway Educational Codeforces Round 133 (Rated for Div. 2)dp

    dp问题 There is a grid, consisting of 22 rows and mm columns. The rows are numbered from 11 to 22 from ...

  4. Codeforces Round #387 (Div. 2) 747F(数位DP)

    题目大意 给出整数k和t,需要产生一个满足以下要求的第k个十六进制数 即十六进制数每一位上的数出现的次数不超过t 首先我们先这样考虑,如果给你了0~f每个数字可以使用的次数num[i],如何求长度为L ...

  5. Educational Codeforces Round 90 (Rated for Div. 2)(A, B, C, D, E)

    Educational Codeforces Round 90 (Rated for Div. 2) Donut Shops 思路 分三种情况: a==c/ba == c / ba==c/b这个时候两 ...

  6. Educational Codeforces Round 114 (Rated for Div. 2) (A ~ F)全题解

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Educational Codeforces Round 114 (Rated for Div. 2) ...

  7. Educational Codeforces Round 32

    http://codeforces.com/contest/888 A Local Extrema[水] [题意]:计算极值点个数 [分析]:除了第一个最后一个外,遇到极值点ans++,包括极大和极小 ...

  8. Educational Codeforces Round 114 (Rated for Div. 2) D. The Strongest Build 暴力 + bfs

    传送门 文章目录 题意: 思路: 题意: 你有nnn个装备槽,每个槽里面有cic_ici​个力量加成,对于每个槽只能选一个力量加成,现在给你mmm个力量组合[b1,b2,...,bn][b_1,b_2 ...

  9. Educational Codeforces Round 17 E. Radio stations cdq分治 + 树状数组

    传送门 文章目录 题意 思路: 题意 有nnn个电台,对于每个电台iii有三个参数xi,ri,fix_i,r_i,f_ixi​,ri​,fi​,分别指他们的坐标.作用半径.频率.如果两个电台频率差值在 ...

最新文章

  1. 字节跳动 录屏功能_一周盘点:Instagram打通视频购物功能 公开叫板TikTok;字节跳动要大力布局跨境出口电商?...
  2. FPGA之道(20)FPGA设计的上板调试与项目总结
  3. python实现登录网站下载文件-Python爬虫 登录网页后下载图片,怎么保持登录状态?...
  4. html5电影在线看,HTML5-电影影评网
  5. big endian和 little endian
  6. Netty实战 IM即时通讯系统(十一)pipeline与channelHandler
  7. 儿童python编程能给孩子带来哪些好处_python编程入门学习对孩子成长有哪些优势?...
  8. Nucleic Acids Research | NONCODE数据库V6版发布,涵盖全面的动植物长非编码RNA注释
  9. Spark源码分析之MemoryManager
  10. 【Elasticsearch】官方Elasticsearch Java客户端的状态
  11. [转载] Python字符串操作方法详解
  12. Code Signal_练习题_evenDigitsOnly
  13. 华夏千秋事,风雨亦为之
  14. 北欧计算机专业出国,留学北欧,哪个国家计算机专业比较好?
  15. PCB设计:传输线模型理论
  16. 转】用Mahout构建职位推荐引擎
  17. 考验直播平台搭建水平的十个性能指标
  18. bzoj4084 [Sdoi2015]bigyration题解
  19. 店盈通谈怎么提高店铺自然流量?
  20. 你的分布式应用真的需要那么多同步调用么?-转自阿里中间件

热门文章

  1. python编程是啥-学了Python编程之后,同是新手的他们做了什么?
  2. python基础知识-python基础知识整理(值得收藏)
  3. android studio 自动引用,Android Studio三方引用报错但是项目可以运行的解决方案
  4. SpringSecurity系列(五) Spring Security 权限设计
  5. php urldecode 加号不显示_php|urldecode urlencode 的加号问题
  6. linux脚本课程设计通讯录,shell整理(35)====模拟用户登录的打印菜单脚本
  7. vue-router的hash(地址栏中带#号)模式与History模式
  8. 【java笔记】IO流(1):IO流概述,字节输出/输入流读写文件
  9. python pandas dataframe 不显示索引_python中pandas.DataFrame的简单操作方法(创建、索引、增添与删除)...
  10. android多文件上传错误,在Android中上传大文件而不会出现内存错误