CF1073E Segment Sum 解题报告
CF1073E Segment Sum
题意翻译
给定\(K,L,R\),求\(L~R\)之间最多不包含超过\(K\)个数码的数的和。
\(K\le 10,L,R\le 10^{18}\)
数位dp
\(dp_{i,s}\)前\(i\)位出现集合\(s\)的贡献和和出现次数
然后记忆化的时候转移一下就行了
然而写的时候还是怪麻烦的
Code:
#include <cstdio>
#include <cstring>
#define ll long long
const int mod=998244353;
inline int add(int a,int b){return a+b>=mod?a+b-mod:a+b;}
#define mul(a,b) (1ll*(a)*(b)%mod)
int po[20],bit[20],len,k;
struct node
{
int val,cnt;
node(){}
node(int v,int c){val=v,cnt=c;}
node friend operator +(node a,node b){return node(add(a.val,b.val),add(a.cnt,b.cnt));}
}dp[20][1<<10];
node dfs(int pos,int sta,int lead,int lim)//前导0和最高位限制
{
int cnt=0;
for(int i=0;i<10;i++) cnt+=sta>>i&1;
if(cnt>pos) return node(0,0);
if(!pos) return node(0,1);
if(!lim&&!lead&&~dp[pos][sta].val) return dp[pos][sta];
node ret=node(0,0),bee;
if(lead) ret=ret+dfs(pos-1,sta,lead,lim&&!bit[pos]);
else if(sta&1) ret=ret+dfs(pos-1,sta,lead,lim&&!bit[pos])+dfs(pos-1,sta^1,lead,lim&&!bit[pos]);
for(int i=1,up=lim?bit[pos]:9;i<=up;i++)
if(sta>>i&1)
{
bee=dfs(pos-1,sta,0,lim&&i==up)+dfs(pos-1,sta^(1<<i),0,lim&&i==up);
ret=ret+bee;
ret.val=add(ret.val,mul(bee.cnt,mul(i,po[pos-1])));
}
return !lim&&!lead?dp[pos][sta]=ret:ret;
}
int cal(ll x)
{
len=0;while(x) bit[++len]=x%10,x/=10;
memset(dp,-1,sizeof dp);int ans=0;
for(int s=0;s<1<<10;s++)
{
int cnt=0;
for(int i=0;i<10;i++) cnt+=s>>i&1;
if(cnt<=k) ans=add(ans,dfs(len,s,1,1).val);
}
return ans;
}
int main()
{
ll l,r;
scanf("%lld%lld%d",&l,&r,&k);
po[0]=1;for(int i=1;i<=18;i++) po[i]=mul(po[i-1],10);
printf("%d\n",add(cal(r),mod-cal(l-1)));
return 0;
}
2019.2.9
CF1073E Segment Sum 解题报告的更多相关文章
- LeetCode 2 Add Two Sum 解题报告
LeetCode 2 Add Two Sum 解题报告 LeetCode第二题 Add Two Sum 首先我们看题目要求: You are given two linked lists repres ...
- LeetCode 1 Two Sum 解题报告
LeetCode 1 Two Sum 解题报告 偶然间听见leetcode这个平台,这里面题量也不是很多200多题,打算平时有空在研究生期间就刷完,跟跟多的练习算法的人进行交流思想,一定的ACM算法积 ...
- CF1073E Segment Sum 自闭了
CF1073E Segment Sum 题意翻译 给定\(K,L,R\),求\(L\)~\(R\)之间最多不包含超过\(K\)个数码的数的和. \(K<=10,L,R<=1e18\) 我 ...
- LeetCode: Combination Sum 解题报告
Combination Sum Combination Sum Total Accepted: 25850 Total Submissions: 96391 My Submissions Questi ...
- USACO Section2.3 Zero Sum 解题报告 【icedream61】
zerosum解题报告----------------------------------------------------------------------------------------- ...
- 【LeetCode】124. Binary Tree Maximum Path Sum 解题报告 (C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 递归 日期 题目地址:https://leetcode ...
- 【LeetCode】548. Split Array with Equal Sum 解题报告(C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 暴力 日期 题目地址:https://leetcode ...
- 【LeetCode】339. Nested List Weight Sum 解题报告(C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 dfs 日期 题目地址:https://leetcod ...
- 【LeetCode】1020. Partition Array Into Three Parts With Equal Sum 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...
随机推荐
- Spring+SpringMVC+MyBatis整合(easyUI、AdminLte3)
实战篇(付费教程) 花了几天的时间,做了一个网站小 Demo,最终效果也与此网站类似.以下是这次实战项目的 Demo 演示. 登录页: 富文本编辑页: 图片上传: 退出登录: SSM 搭建精美实用的管 ...
- Mysql8.0的登录大坑……(忘记登录密码也可以这么搞)
关于安装和使用就不说了,属于基本操作了: 我来重点记录一下关于使用前,使用navicat登录的时候报错,1130和2059 查看安装后随机生成的密码: grep 'temporary password ...
- Object-Oriented(二)原型对象
自用备忘笔记 1. 理解原型对象 只要创建函数,函数上就会创建一个 prototype 属性指向函数的原型对象. function Person() {} Person.prototype //指向该 ...
- 利用阿里云的源yum方式安装Mongodb
今天在线上服务器上安装MongoDB,从Mongo官网直接下载链接,结果在下载时发觉速度慢的可怜.迫于无奈,只能找国内的镜像下载.这里选择阿里云的源进行安装,记录如下: 1)在/etc/yum.rep ...
- linux-RPM安装
vh可写可不写
- Individual Project-word frequency
预计时间: 项目要求理解:半小时 c#语言了解:6小时 构思程序框架:2小时 编写调试程序:4小时 项目实际完成时间: 项目要求理解:半小时 c#语言了解:6小时 构思程序框架:2小时 编写调试程序: ...
- 个人博客作业Week2 是否需要有代码规范
问题:是否需要有代码规范 对于是否需要有代码规范,请考虑下列论点并反驳/支持: 1.这些规范都是官僚制度下产生的浪费大家的编程时间.影响人们开发效率, 浪费时间的东西. 2.我是个艺术家,手艺人,我有 ...
- 软件工程导论课后习题Github作业(把一个英文句子中的单词次序逆序,单词中字母正常排列)
Java源代码 package yly; import java.util.Scanner; public class ruanjian { public static void main(St ...
- 推广App篇
推广App篇 团队github地址:https://github.com/ouqifeng/EasyGoOperation.git 在完成该项目工程后,我们开始寻找合适的方法推广我们的软件. 经过一番 ...
- Particle filter for visual tracking
Kalman Filter Cons: Kalman filtering is inadequate because it is based on the unimodal Gaussian dist ...